Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector <int> parent(N);
- vector <int> link(N);
- int find(int u )
- {
- while(u!= parent[u])
- {
- u = parent[u];
- }
- return u;
- }
- bool same(int u , int v)
- {
- return (find(u) == find(v));
- }
- void Union(int u , int v)
- {
- if(same(u , v))
- return;
- int p1 = find(u);
- int p2 = find(v);
- if(link[p1] < link[p2])
- {
- swap(p1 , p2);
- }
- link[p1] += link[p2];
- parent[p2] = p1;
- }
- void remove(int u , int v)
- {
- int p = find(u);
- if(link[p] < 2*link[u])
- {
- swap(p , u);
- }
- link[p] -= link[u];
- parent[u] = u;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement