Pagini recente » Cod sursa (job #2928963) | Cod sursa (job #2937912) | Cod sursa (job #2934820) | Cod sursa (job #1926802) | Cod sursa (job #1184916)
#include <stdio.h>
#define NMAX 100020
int T[NMAX],R[NMAX],N,M,i,cod,x,y;
int find(int x)
{
int R;
for (R=x;T[R]!=R;R=T[R]);
for (;T[x]!=x;) T[x]^=x^=T[x];
return R;
}
void unite(int x,int y)
{
if (R[x]>R[y]) T[y]=x;
else T[x]=y;
if (R[x]==R[y]) ++R[y];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&N,&M);
for (i=1;i<=N;i++) T[i]=i,R[i]=1;
for (i=1;i<=M;i++)
{
scanf("%d %d %d",&cod,&x,&y);
if (cod==1) unite(find(x),find(y));
else
if (find(x)==find(y)) printf("DA\n");
else printf("NU\n");
}
return 0;
}