Advertisement
Mr_Olympia

снм

May 27th, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.38 KB | None | 0 0
  1. ll parent[N];
  2. ll rnk[N];
  3.  
  4. void make_set (int v) {
  5.     parent[v] = v;
  6.     rnk[v] = 0;
  7. }
  8.  
  9. int find_set (int v) {
  10.     if (v == parent[v])
  11.         return v;
  12.     return parent[v] = find_set (parent[v]);
  13. }
  14.  
  15. void union_sets (int a, int b) {
  16.     a = find_set (a);
  17.     b = find_set (b);
  18.     if (a != b) {
  19.         if (rnk[a] < rnk[b])
  20.             swap (a, b);
  21.         parent[b] = a;
  22.         if (rnk[a] == rnk[b])
  23.             ++rnk[a];
  24.     }
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement