Pagini recente » Cod sursa (job #2585018) | Cod sursa (job #236685) | Cod sursa (job #2943677) | Cod sursa (job #1123304) | Cod sursa (job #826322)
Cod sursa(job #826322)
#include<stdio.h>
int t[100001],h[100001];
int find(int x)
{
if(x==t[x])
return x;
return find(t[x]);
}
void unite(int u,int v)
{
if(h[u]==h[v])
{
h[u]++;
t[v]=t[u];
}
else
if(h[u]>h[v])
t[v]=t[u];
else
t[u]=t[v];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m,i,x,y,tx,ty,a;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
t[i]=i;
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&x,&y);
tx=find(x);
ty=find(y);
if(a==1)
{
if(tx!=ty)
unite(tx,ty);
}
else
{
if(tx==ty)
printf("DA");
else
printf("NU");
printf("\n");
}
}
return 0;
}