Pagini recente » Cod sursa (job #3292203) | Cod sursa (job #39431) | Cod sursa (job #2719782) | Cod sursa (job #1136552) | Cod sursa (job #228337)
Cod sursa(job #228337)
#include <stdio.h>
#define MAX 100000
int N,M;
int cod,x,y;
int a,b,i;
int reu[MAX],mul[MAX];
int cauta(int x)
{
if (x==mul[x])
return x;
else
if (x!=mul[x])
mul[x]=cauta(mul[x]);
return mul[x];
}
void reuneste(int x, int y)
{
x=cauta(x);
y=cauta(y);
if (reu[x]<reu[y])
mul[x]=y;
else
mul[y]=x;
if (reu[x]==reu[y])
reu[x]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d", &N,&M);
for (i=1;i<=N;++i)
{
mul[i]=i;
}
while (M--)
{
scanf("%d %d %d", &cod,&x,&y);
a=cauta(x);
b=cauta(b);
if (cod==1)
{
reuneste(x,y);
}
else
if (cod==2)
{
if (a==b)
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}