Pagini recente » Cod sursa (job #833072) | Cod sursa (job #532328) | Cod sursa (job #2954417) | Cod sursa (job #645640) | Cod sursa (job #243464)
Cod sursa(job #243464)
#include<stdio.h>
#define nmax 100005
int fej[nmax],rg[nmax];
int n,m;
int go (int x)
{
int y,r;
for (r=x;fej[r]!=r;r=fej[r])
;
for (;fej[x]!=r;)
{
y=fej[x];
fej[x]=r;
x=y;
}
return r;
}
void egyesit (int x,int y)
{
if (rg[x]>rg[y])
fej[y]=x;
else
fej[x]=y;
if (rg[x]==rg[y])
rg[y]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
int i,c,x,y;
for (i=1;i<=n;++i)
{
fej[i]=i;
rg[i]=1;
}
for (i=1;i<=m;++i)
{
scanf("%d%d%d",&c,&x,&y);
if (c==1)
egyesit(go(x),go(y));
else
if (go(x)==go(y))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}