#include <iostream>
#include <vector>
void dfs(int start, int goal, bool &found, std::vector<std::vector<int>> &A, std::vector<int> &visited) {
if(visited[start] || found) return;
visited[start] = true;
if(start == goal)
{
found = true;
return;
}
for(auto a : A[start])
{
if(!visited[a])
dfs(a, goal, found, A, visited);
}
}
int main()
{
int N, K;
std::cin >> N >> K;
std::vector<std::vector<int>> A(N + 1);
char t;
for(int i = 0; i < N + K - 1; i++)
{
std::cin >> t;
if(t == 'S')
{
int a, b;
std::cin >> a >> b;
A[a].push_back(b);
A[b].push_back(a);
}
else if (t == 'Q')
{
int a, d;
std::cin >> a >> d;
std::vector<int> visited(N + 1, false);
bool found = false;
dfs(a, d, found, A, visited);
if(found)
std::cout << "yes" << std::endl;
else
std::cout << "no" << std::endl;
}
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |