Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<vector<int>> adj;
- vector<int> visited;
- int nv, ne, ql;
- void PrintVisited(){
- for(int i =1; i <= nv; ++i){
- cout << visited[i] << " ";
- }
- cout << "\n";
- return;
- }
- void DFS(int u, int cnt){
- visited[u] = cnt;
- for(auto v : adj[u]){
- if(visited[v] == 0){
- DFS(v, cnt);
- }
- }
- return;
- }
- void FindComponent(){
- int cnt = 1;
- for(int i = 1; i <= nv; ++i){
- if(visited[i] == 0){
- DFS(i, cnt);
- ++cnt;
- }
- }
- return;
- }
- int main(){
- int u, v;
- scanf("%d %d", &nv, &ne);
- adj.assign(nv + 1, vector<int>());
- visited.assign(nv + 1, 0);
- for(int i = 1; i <= ne; ++i){
- scanf("%d %d", &u, &v);
- adj[u].push_back(v);
- adj[v].push_back(u);
- }
- FindComponent();
- scanf("%d", &ql);
- for(int i = 0; i < ql; ++i){
- scanf("%d %d", &u, &v);
- if(visited[u] == visited[v]){
- cout << "Yes\n";
- } else {
- cout << "No\n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement