Advertisement
YEZAELP

B. Chemical table

Jun 28th, 2021
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.70 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 4e5 + 10;
  5. int parent[N];
  6. set <int> group;
  7.  
  8. int Root(int u){
  9.     if(parent[u] == u) return u;
  10.     return parent[u] = Root(parent[u]);
  11. }
  12.  
  13. void Merge(int u, int v){
  14.     u = Root(u);
  15.     v = Root(v);
  16.     if(u == v) return;
  17.     parent[v] = u;
  18. }
  19.  
  20. int main(){
  21.  
  22.     int n, m, q;
  23.     scanf("%d%d%d", &n, &m, &q);
  24.  
  25.     for(int i=1;i<=n+m;i++) parent[i] = i;
  26.  
  27.     while(q--){
  28.         int row, col;
  29.         scanf("%d%d", &row, &col);
  30.         Merge(row, col + n);
  31.     }
  32.  
  33.     for(int i=1;i<=n;i++) group.insert(Root(i));
  34.     for(int j=1;j<=m;j++) group.insert(Root(j + n));
  35.  
  36.     printf("%d", group.size() - 1);
  37.  
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement