Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.75 KB | None | 0 0
  1. #include<fstream>
  2. #include<iostream>
  3. #include<list>
  4. #include<vector>
  5. using namespace std;
  6. ifstream fin("prieteni.in");
  7. ofstream fout("prieteni.out");
  8. list<int> A;
  9. vector<list<int>> disjoint_sets;
  10. vector<int>regent;
  11. void Unite(int x, int y)
  12. {
  13.     //if(x<y)
  14.     {
  15.         disjoint_sets[x-1].merge(disjoint_sets[y-1]);
  16.         regent[x-1]=y;
  17.         vector<list<int>>::iterator parker=disjoint_sets.begin();
  18.         advance(parker,y-1);
  19.         disjoint_sets.erase(parker);
  20.     }
  21.  
  22. }
  23. int FIND_FRIEND(int vf)
  24. {
  25.     int nr=0;
  26.     for(int i=0;i<regent.size();i++)
  27.         if(vf==i+1)
  28.         {
  29.             for(int j=0;j<disjoint_sets[vf].size();j++)
  30.                 nr++;
  31.                 break;
  32.         }
  33.     return nr;
  34. }
  35. int main()
  36. {
  37.     int N,K,x,y,vf,op;
  38.     fin>>N>>K;
  39.     for(int j=0;j<N;j++)
  40.     {
  41.         regent.push_back(j+1);
  42.         A.push_back(j+1);
  43.         disjoint_sets.push_back(A);
  44.         A.erase(A.begin());
  45.     }
  46.     for(int i=1;i<=K;i++)
  47.     {
  48.         fin>>op;
  49.         if(op==1)
  50.         {
  51.             fin>>x>>y;
  52.             Unite(x,y);
  53.  
  54.  
  55.  
  56.         }
  57.         else
  58.         {
  59.             fin>>vf;
  60.             //cout<<FIND_FRIEND(vf)<<'\n';
  61.         }
  62.     }
  63.     for(auto &ii:disjoint_sets)
  64.             {
  65.                 cout<<'{';
  66.                 for(auto &jj:ii)
  67.                     cout<<jj<<' ';
  68.                 cout<<'}'<<endl;
  69.             }
  70.     /*RUBBISH CODE 4 LATER
  71.     vector<list<int>>::iterator ii;
  72.             list<int>::iterator jj;
  73.             for(ii=disjoint_set.begin();ii<disjoint_set.end();ii++)
  74.             {
  75.                 cout<<'{';
  76.                 for(jj=disjoint_set->begin();jj<disjoint_set.(end);jj++)
  77.                     cout<<<<', ';
  78.                 cout<<'{';
  79.             }*/
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement