Pagini recente » Cod sursa (job #580986) | Cod sursa (job #2229256) | Cod sursa (job #1218500) | Cod sursa (job #495462) | Cod sursa (job #260233)
Cod sursa(job #260233)
#include <cstdio>
#define N 100001
long t[N],l[N];
void reuneste(int x,int y)
{while(t[x]!=0)x=t[x];
while(t[y]!=0)y=t[y];
if(l[x]==l[y])t[x]=y,l[y]++;
else if(l[x]<l[y])t[x]=y;
else t[y]=x;
}
int acelasi_arbore(int x,int y)
{while(t[x]!=0)x=t[x];
while(t[y]!=0)y=t[y];
if(x==y)return 1;
else return 0;
}
int main ()
{freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
long n,m,i,c,x,y;
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{scanf("%d%d%d",&c,&x,&y);
if(c==1)
{reuneste(x,y);
}
else
{if(acelasi_arbore(x,y))
{printf("DA\n");
}
else
{printf("NU\n");
}
}
}
return 0;
}