Pagini recente » Cod sursa (job #694368) | Cod sursa (job #1872649) | Cod sursa (job #1123521) | Cod sursa (job #2046454) | Cod sursa (job #1696487)
#include<bits/stdc++.h>
using namespace std;
int i,n,q,sum[100005],op,x,y,poz[100005];
map<int,bool> M[100005];
int main()
{
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>q;
for(i=1;i<=n;++i) M[i][i]=1,sum[i]=i,poz[i]=i;
while(q--)
{
cin>>op;
if(op==1)
{
cin>>x>>y;
if(poz[x]==poz[y]) continue;
if(M[poz[x]].size()>M[poz[y]].size()) swap(x,y);
op=x;
for(auto it:M[poz[x]])
{
M[poz[y]][it.first]=1;
poz[it.first]=poz[y];
sum[poz[y]]+=it.first;
}
M[op].clear();
continue;
}
if(op==2)
{
cin>>x>>y;
if(poz[x]==poz[y]) cout<<"DA\n";
else cout<<"NU\n";
M[poz[y]][x]=1; sum[poz[y]]+=x;
M[poz[x]].erase(x); sum[poz[x]]-=x;
poz[x]=poz[y];
continue;
}
if(op==3)
{
cin>>x;
cout<<M[poz[x]].size()<<' '<<sum[poz[x]]<<'\n';
}
}
return 0;
}