Pagini recente » Cod sursa (job #320219) | Cod sursa (job #1165642)
#include<stdio.h>
#define nmax 100005
int x, xx, y, op, r, xurm, m, i, n;
int t[nmax], ad[nmax];
int rad(int x)
{
xx=x;
while (t[x]!=x)
x=t[x];
r=x;
x=xx;
while (t[x]!=x)
{
xurm=t[x];
t[x]=r;
x=xurm;
}
return r;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%ld %ld",&n,&m);
for(i=1;i<=n;i++)
t[i]=i;
for (i=1;i<=m;i++)
{
scanf("%ld",&op);
if (op==1)
{
scanf("%ld %ld",&x,&y);
x=rad(x); y=rad(y);
if (ad[x]<ad[y])
t[x]=y;
else
{
t[y]=x;
if (ad[x]==ad[y])
ad[x]++;
}
}
else
{
scanf("%ld %ld",&x,&y);
if (rad(x)==rad(y))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}