//#include #include #include #include using std::vector; using std::pair; void explore(vector> &adj, vector &visited, int x, int y) { visited.push_back(x); if (x == y) return; for (size_t i = 0; i < adj[x].size(); i++) { if (std::find(visited.begin(), visited.end(), adj[x][i]) == visited.end()) explore(adj, visited, adj[x][i], y); } } int reach(vector > &adj, int x, int y) { vector visited; if (x == y) return 1; explore(adj, visited, x, y); if (std::find(visited.begin(), visited.end(), y) != visited.end()) return 1; return 0; } //TEST(Reachable, Reach1) { // vector> adj = { { 1, 3 }, { }, { 1 }, { 2 } }; // ASSERT_EQ(reach(adj, 0, 3), 1); //} int main() { size_t n, m; std::cin >> n >> m; vector > adj(n, vector()); for (size_t i = 0; i < m; i++) { int x, y; std::cin >> x >> y; adj[x - 1].push_back(y - 1); adj[y - 1].push_back(x - 1); } int x, y; std::cin >> x >> y; std::cout << reach(adj, x - 1, y - 1); }