Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DSU
- {
- public:
- vector<vector<int>> comp;
- vector<int> parent;
- DSU(int n)
- {
- for(int i = 0; i <= n; i++)
- {
- vector<int> temp;
- temp.push_back(i);
- comp.push_back(temp);
- parent.push_back(i);
- }
- }
- void unite(int u, int v)
- {
- int par1 = parent[u];
- int par2 = parent[v];
- if(par2 == par1) return;
- if(comp[par1].size() < comp[par2].size()) swap(par1, par2);
- for(int x : comp[par2])
- {
- comp[par1].push_back(x);
- parent[x] = par1;
- }
- comp[par2].clear();
- }
- int getPar(int x)
- {
- return parent[x];
- }
- int getSize(int x)
- {
- return comp[getPar(x)].size();
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement