Pagini recente » Cod sursa (job #2605090) | Cod sursa (job #2209727) | Cod sursa (job #1352193) | Cod sursa (job #2259208) | Cod sursa (job #269604)
Cod sursa(job #269604)
#include<stdio.h>
#define MAXN 100001
int i,n,a,b,x,y,m,c;
int tata[MAXN],rang[MAXN];
int rad(int x)
{
int z,y=x;
while(y!=tata[y])
y=tata[y];
while(x!=tata[x])
{
z=tata[x];
tata[x]=y;
x=z;
}
return y;
}
int main(void)
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
tata[i]=i, rang[i]=1;
while(m--)
{
scanf("%d%d%d",&c,&x,&y);
if(c==1)
{
a=rad(x);
b=rad(y);
if(rang[a]<rang[b])
tata[a]=b;
else
tata[b]=a;
if(rang[a]==rang[b])
rang[a]++;
}
else
{
a=rad(x);
b=rad(y);
if(a==b)
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}