Pagini recente » Cod sursa (job #1591112) | Cod sursa (job #1879155) | Cod sursa (job #304715) | Cod sursa (job #1072976) | Cod sursa (job #2263832)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,RG[10002],TT[10002],i,q,x,y;
int get_root(int x){
int R=x;
while(R!=TT[R]){
R=TT[R];
}
while(TT[x]!=x){
int y=TT[x];
TT[x]=R;
x=y;
}
return R;
}
void unite(int x,int y){
if(RG[x]==RG[y]){
RG[x]++;
TT[y]=x;
}
else{
if(RG[x]>RG[y]) TT[y]=x;
else TT[x]=y;
}
}
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++){
RG[i]=1;
TT[i]=i;
}
for(i=1;i<=m;i++){
cin>>q>>x >>y;
if(q==1){
unite(get_root(x),get_root(y));
}
else {
if(get_root(x)==get_root(y)) cout <<"DA"<<endl;
else cout<<"NU"<<endl;
}
}
return 0;
}