Cod sursa(job #909796)
#include<cstdio>
long int tata[100005],n,m,x,y,t,i,tip,t1,t2;
void re()
{
t=x;
while(t!=tata[t])t=tata[t];
t1=t;
t=y;
while(t!=tata[t])t=tata[t];
t2=t;
if(t1>t2){
t=y;
while(t!=tata[t]){
t2=t;
t=tata[t];
tata[t2]=t1;
}
tata[t]=t1;
}
else{
t=x;
while(t!=tata[t]){
t1=t;
t=tata[t];
tata[t1]=t2;
}
tata[t]=t2;
}
}
void ver()
{
t=x;
while(t!=tata[t])t=tata[t];
t1=t;
if(t1==tata[y])printf("DA\n");
else{
t=y;
while(t!=tata[t])t=tata[t];
t2=t;
if(t1==t2)printf("DA\n");
else printf("NU\n");
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%ld %ld",&n,&m);
for(i=1;i<=n;i++)tata[i]=i;
for(i=1;i<=m;i++){
scanf("%ld %ld %ld",&tip,&x,&y);
if(tip==1)re();
else ver();
}
return 0;
}