Pagini recente » Cod sursa (job #2747373) | Cod sursa (job #2943362) | Cod sursa (job #3167737) | Cod sursa (job #2290977) | Cod sursa (job #573539)
Cod sursa(job #573539)
#include<cstdio>
int i,n,m,t[100010],r[100010];
int gas(int x)
{
int rad;
for(rad=x;rad!=t[rad];rad=t[rad]);
while(x!=t[x])
{
int aux=t[x];
t[x]=rad;
x=aux;
}
return rad;
}
void uneste(int x,int y)
{
if(r[x]<r[y])
t[x]=y;
else
t[y]=x;
if(r[x]==r[y]) r[x]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
t[i]=i;
r[i]=1;
}
for(i=1;i<=m;++i)
{
int tip,x,y;
scanf("%d%d%d",&tip,&x,&y);
if(tip==1) uneste(gas(x),gas(y));
else
{
if(gas(x)==gas(y)) printf("DA\n");
else printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}