Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 4e5 + 10;
- int parent[N];
- set <int> group;
- int Root(int u){
- if(parent[u] == u) return u;
- return parent[u] = Root(parent[u]);
- }
- void Merge(int u, int v){
- u = Root(u);
- v = Root(v);
- if(u == v) return;
- parent[v] = u;
- }
- int main(){
- int n, m, q;
- scanf("%d%d%d", &n, &m, &q);
- for(int i=1;i<=n+m;i++) parent[i] = i;
- while(q--){
- int row, col;
- scanf("%d%d", &row, &col);
- Merge(row, col + n);
- }
- for(int i=1;i<=n;i++) group.insert(Root(i));
- for(int j=1;j<=m;j++) group.insert(Root(j + n));
- printf("%d", group.size() - 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement