Advertisement
mickypinata

SMMR-T145: Cultist

Mar 26th, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. vector<vector<int>> adj;
  6. vector<int> visited;
  7. int nv, ne, ql;
  8.  
  9. void PrintVisited(){
  10.     for(int i =1; i <= nv; ++i){
  11.         cout << visited[i] << " ";
  12.     }
  13.     cout << "\n";
  14.     return;
  15. }
  16.  
  17. void DFS(int u, int cnt){
  18.     visited[u] = cnt;
  19.     for(auto v : adj[u]){
  20.         if(visited[v] == 0){
  21.             DFS(v, cnt);
  22.         }
  23.     }
  24.     return;
  25. }
  26.  
  27. void FindComponent(){
  28.     int cnt = 1;
  29.     for(int i = 1; i <= nv; ++i){
  30.         if(visited[i] == 0){
  31.             DFS(i, cnt);
  32.             ++cnt;
  33.         }
  34.     }
  35.     return;
  36. }
  37.  
  38. int main(){
  39.  
  40.     int u, v;
  41.  
  42.     scanf("%d %d", &nv, &ne);
  43.     adj.assign(nv + 1, vector<int>());
  44.     visited.assign(nv + 1, 0);
  45.     for(int i = 1; i <= ne; ++i){
  46.         scanf("%d %d", &u, &v);
  47.         adj[u].push_back(v);
  48.         adj[v].push_back(u);
  49.     }
  50.     FindComponent();
  51.     scanf("%d", &ql);
  52.     for(int i = 0; i < ql; ++i){
  53.         scanf("%d %d", &u, &v);
  54.         if(visited[u] == visited[v]){
  55.             cout << "Yes\n";
  56.         } else {
  57.             cout << "No\n";
  58.         }
  59.     }
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement