Rakibul_Ahasan

Disjont_Algo

Dec 9th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. #define MX 100
  4.  
  5. int parent[MX];
  6. int rankParent[MX];
  7.  
  8. void makeSet(int n)
  9. {
  10.     for(int i=0;i<n;i++){
  11.         parent[i]=i;
  12.         rankParent[i]=0;
  13.     }
  14. }
  15.  
  16. int findParent(int x)
  17. {
  18.     if(x!=parent[x])
  19.         return parent[x]=findParent(parent[x]);
  20.     else return x;
  21. }
  22.  
  23. void unionSet(int x,int y)
  24. {
  25.     int xRoot =findParent(x);
  26.     int yRoot =findParent(y);
  27.  
  28.     if(xRoot==yRoot) return;
  29.  
  30.     if(rankParent[xRoot]<rankParent[yRoot])
  31.         parent[xRoot]=yRoot;
  32.        
  33.     else if(rankParent[xRoot]>rankParent[yRoot])
  34.         parent[yRoot]=xRoot;
  35.        
  36.     else {
  37.         parent[yRoot]=xRoot;
  38.         rankParent[xRoot]++;
  39.     }
  40. }
  41.  
  42. void printSet(int n)
  43. {
  44.     for(int i=0;i<n;i++)
  45.     {
  46.         cout<<"Node is: "<< i <<" Parent is: "<<parent[i]<<" Rank is: "<<rankParent[i]<<"\n";
  47.     }
  48. }
  49.  
  50. int main()
  51. {
  52.     int n;
  53.     cin>>n;
  54.     makeSet(n);
  55.  
  56.     unionSet(0,1);
  57.     unionSet(4,2);
  58.     unionSet(3,1);
  59.     unionSet(0,3);
  60.     //unionSet(0,4);
  61.  
  62.     printSet(n);
  63. }
Add Comment
Please, Sign In to add comment