Advertisement
Jasir

disjoint set union

May 10th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.50 KB | None | 0 0
  1. void initset(int n){
  2.     for(int i = 1; i<=n; i++){
  3.         ara[i] = i;
  4.         sz[i] = 1;
  5.     }
  6. }
  7.  
  8. int findset(int i){
  9.     if(ara[i] == i) return i;
  10.     return ara[i] = findset(ara[i]);
  11. }
  12.  
  13. bool issameset(int i, int j){
  14.     return (findset(i)==findset(j));
  15. }
  16.  
  17. void unionset(int i, int j){
  18.     int a = findset(j);
  19.     int b = findset(i);
  20.     if(a==b) return;
  21.     if(sz[a]>=sz[b]){
  22.         sz[a]+=sz[b];
  23.         ara[b] = a;
  24.     }
  25.     else{
  26.         sz[b]+=sz[a];
  27.         ara[a] = b;
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement