Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define MX 100
- using namespace std;
- int parent[MX];
- int parent_rank[MX];
- void makeset(int n)
- {
- for(int i=0; i<n; i++)
- {
- parent[i]=i;
- parent_rank[i]=0;
- }
- }
- int findparent (int x)
- {
- if(x!=parent[x])
- {
- return parent[x]=findparent(parent[x]);
- }
- else
- return x;
- }
- void Unionset(int x,int y)
- {
- int px=findparent(x);
- int py=findparent(y);
- if(px==py)
- {
- return ;
- }
- if(parent_rank[px]>parent_rank[py])
- {
- parent[py]=px;
- }
- else if(parent_rank[px]<parent_rank[py])
- {
- parent[px]=py;
- }
- else
- {
- parent[py]=px;
- parent_rank[px]++;
- }
- }
- void printset(int n)
- {
- for(int i=0; i<n; i++)
- {
- cout<<"Node "<<i<<"Parent "<<parent[i]<<"Rank "<<parent_rank[i]<<endl;
- }
- }
- int main()
- {
- int n;
- cin>>n;
- makeset(n);
- Unionset(0,1);
- Unionset(4,2);
- Unionset(3,1);
- Unionset(0,3);
- Unionset(0,4);
- printset(n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement