Advertisement
jiteshrao

DSU

Oct 13th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.63 KB | None | 0 0
  1. class DSU
  2. {
  3. public:
  4.     vector<vector<int>> comp;
  5.     vector<int> parent;
  6.  
  7.     DSU(int n)
  8.     {
  9.         for(int i = 0; i <= n; i++)
  10.         {
  11.             vector<int> temp;
  12.             temp.push_back(i);
  13.             comp.push_back(temp);
  14.             parent.push_back(i);
  15.         }
  16.     }
  17.  
  18.     void unite(int u, int v)
  19.     {
  20.         int par1 = parent[u];
  21.         int par2 = parent[v];
  22.         if(par2 == par1) return;
  23.         if(comp[par1].size() < comp[par2].size()) swap(par1, par2);
  24.         for(int x : comp[par2])
  25.         {
  26.             comp[par1].push_back(x);
  27.             parent[x] = par1;
  28.         }
  29.         comp[par2].clear();
  30.     }
  31.  
  32.     int getPar(int x)
  33.     {
  34.         return parent[x];
  35.     }
  36.  
  37.     int getSize(int x)
  38.     {
  39.         return comp[getPar(x)].size();
  40.     }
  41.  
  42. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement