yungyao

DSU

Jun 18th, 2021 (edited)
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.56 KB | None | 0 0
  1. //dsu template
  2. struct DSU{
  3.     int dsu[maxn],size[maxn];
  4.     DSU (int n){
  5.         REP1(i,n){
  6.             dsu[i] = i;
  7.             size[i] = 1;
  8.         }
  9.     }
  10.     inline void reset(int n){
  11.         REP1(i,n){
  12.             dsu[i] = i;
  13.             size[i] = 1;
  14.         }
  15.     }
  16.     inline int query(int k){
  17.         return dsu[k] == k ? k : dsu[k] = query(dsu[k]);
  18.     }
  19.     inline void merge(int u,int v){
  20.         u = query(u); v = query(v);
  21.         if (size[v] > size[u])
  22.             swap(u,v);
  23.         dsu[v] = u;
  24.         size[u] += size[v];
  25.     }
  26. };
Add Comment
Please, Sign In to add comment