Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- #include<iostream>
- #include<list>
- #include<vector>
- using namespace std;
- ifstream fin("prieteni.in");
- ofstream fout("prieteni.out");
- list<int> A;
- vector<list<int>> disjoint_sets;
- vector<int>regent;
- void Unite(int x, int y)
- {
- //if(x<y)
- {
- disjoint_sets[x-1].merge(disjoint_sets[y-1]);
- regent[x-1]=y;
- vector<list<int>>::iterator parker=disjoint_sets.begin();
- advance(parker,y-1);
- disjoint_sets.erase(parker);
- }
- }
- int FIND_FRIEND(int vf)
- {
- int nr=0;
- for(int i=0;i<regent.size();i++)
- if(vf==i+1)
- {
- for(int j=0;j<disjoint_sets[vf].size();j++)
- nr++;
- break;
- }
- return nr;
- }
- int main()
- {
- int N,K,x,y,vf,op;
- fin>>N>>K;
- for(int j=0;j<N;j++)
- {
- regent.push_back(j+1);
- A.push_back(j+1);
- disjoint_sets.push_back(A);
- A.erase(A.begin());
- }
- for(int i=1;i<=K;i++)
- {
- fin>>op;
- if(op==1)
- {
- fin>>x>>y;
- Unite(x,y);
- }
- else
- {
- fin>>vf;
- //cout<<FIND_FRIEND(vf)<<'\n';
- }
- }
- for(auto &ii:disjoint_sets)
- {
- cout<<'{';
- for(auto &jj:ii)
- cout<<jj<<' ';
- cout<<'}'<<endl;
- }
- /*RUBBISH CODE 4 LATER
- vector<list<int>>::iterator ii;
- list<int>::iterator jj;
- for(ii=disjoint_set.begin();ii<disjoint_set.end();ii++)
- {
- cout<<'{';
- for(jj=disjoint_set->begin();jj<disjoint_set.(end);jj++)
- cout<<<<', ';
- cout<<'{';
- }*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement