Advertisement
Josif_tepe

Untitled

Dec 19th, 2022
872
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. const int maxn = 105;
  4. int idx[maxn];
  5. int find_root(int x) {
  6.     while(idx[x] != x) {
  7.         idx[x] = idx[idx[x]];
  8.         x = idx[x];
  9.     }
  10.     return x;
  11. }
  12. bool check(int A, int B) {
  13.     if(find_root(A) == find_root(B)) {
  14.         return true;
  15.     }
  16.     return false;
  17. }
  18. void union_two_elements(int A, int B) {
  19.     int root_a = find_root(A);
  20.     int root_b = find_root(B);
  21.     idx[root_a] = root_b;
  22. }
  23. int main() {
  24.     for(int i = 0; i < maxn; i++) {
  25.         idx[i] = i;
  26.     }
  27.    
  28.     while(true) {
  29.         string s;
  30.         cin >> s;
  31.        
  32.         if(s == "union") {
  33.             int a,b;
  34.             cin >> a >> b;
  35.             union_two_elements(a, b);
  36.         }
  37.         else if(s == "check") {
  38.             int a, b;
  39.             cin >> a >> b;
  40.             if(check(a, b)) {
  41.                 cout << "YES" << endl;
  42.             }
  43.             else {
  44.                 cout << "NO" << endl;
  45.             }
  46.         }
  47.     }
  48.    
  49.    
  50.     return 0;
  51. }
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement