Pagini recente » Cod sursa (job #831995) | Cod sursa (job #283875) | Cod sursa (job #374073) | Cod sursa (job #1562620) | Cod sursa (job #2998747)
#include<fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,m;
int i,j,caz,x,y;
int t[100001],rg[100001];
void unire(int x,int y){
if(rg[x]<rg[y])
t[x]=y;
if(rg[x]>rg[y])
t[y]=x;
if(rg[x]==rg[y]){
t[x]=y;
rg[y]++;
}
}
int find(int x){
while(x!=t[x])
x=t[x];
return x;
}
int main(){
cin>>n>>m;
for(i=1;i<=n;i++){
rg[i]=1;
t[i]=i;
}
for(i=1;i<=m;i++){
cin>>caz>>x>>y;
int tx=find(x);
int ty=find(y);
if(caz==1)
unire(tx,ty);
else{
if(tx==ty)
cout<<"DA"<<endl;
else
cout<<"NU"<<endl;
}
}
return 0;
}