D_L3

Път в граф

Jan 25th, 2024
998
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. class UnionFind{
  9.     vector<int> parents;
  10. public:
  11.     UnionFind(int n) : parents(n){
  12.         for(int i = 0; i < n; i++)
  13.             parents[i] = i;
  14.     }
  15.    
  16.     int find(int num){
  17.         if(parents[num] == num)
  18.             return num;
  19.         return parents[num] = find(parents[num]);
  20.     }
  21.     void unite(int a, int b){
  22.         int parentA = find(a);
  23.         int parentB = find(b);
  24.        
  25.         if(parentA == parentB)
  26.             return;
  27.        
  28.         parents[parentA] = parentB;
  29.     }
  30. };
  31.  
  32. int main() {
  33.     int n, m, u, v, w;
  34.     cin >> n >> m;
  35.     UnionFind uf(n);
  36.  
  37.     for(int i = 0; i < m; i++){
  38.         cin >> u >> v;
  39.         uf.unite(u, v);
  40.     }
  41.    
  42.     cin >> w;
  43.     vector<bool> result(w);
  44.     for(int i = 0; i < w; i++){
  45.         cin >> u >> v;
  46.         result[i] = (uf.find(u) == uf.find(v));
  47.     }
  48.    
  49.     for(auto res : result){
  50.         cout << res << " ";
  51.     }
  52.    
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment