Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int pset[111], ranki[111], size[111];
- void init(int n){
- rep(i,0,n+1){
- pset[i] = i;
- ranki[i] = 0;
- size[i] = 1;
- }
- }
- int findset(int x){
- if(x != pset[x])
- pset[x] = findset(pset[x]);
- return pset[x];
- }
- bool sameset(int x, int y){
- return findset(x) == findset(y);
- }
- void unionset(int x, int y){
- x = findset(x);
- y = findset(y);
- if(x == y) return;
- if(ranki[x] > ranki[y]){
- pset[y] = x;
- size[x] += size[y];
- }
- else{
- pset[x] = y;
- size[y] += size[x];
- if(ranki[x] == ranki[y])
- ranki[y]++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment