Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int mx = 2e5+10;
- vector < int > parent(mx);
- vector < int > sz(mx);
- int numberOfComponents;
- void init(int n){
- for(int i = 1; i <= n; i++){
- parent[i] = i;
- sz[i] = 1;
- }
- }
- int findSet(int a){
- if(parent[a] == a){
- return a;
- }
- parent[a] = findSet(parent[a]);
- return parent[a];
- }
- void unionSet(int a, int b){
- a = findSet(a);
- b = findSet(b);
- if(a != b){
- if(sz[a] >= sz[b]){
- parent[b] = a;
- sz[a] += sz[b];
- }
- else{
- parent[a] = b;
- sz[b] += sz[a];
- }
- numberOfComponents--;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement