Pagini recente » Cod sursa (job #2887972) | Cod sursa (job #621244) | Cod sursa (job #1260197) | Cod sursa (job #2168548) | Cod sursa (job #364565)
Cod sursa(job #364565)
#include<stdio.h>
int tata[100005],grad[100005],n,m,tip,n1,n2,t1,t2;
int cautta (int nod)
{
int ta;
if(tata[nod]==nod)
return nod;
ta=cautta(tata[nod]);
tata[nod]=ta;
return ta;
}
int main ()
{
int i;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
grad[i]=1;
tata[i]=i;
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&tip,&n1,&n2);
t1=cautta(n1);
t2=cautta(n2);
if(tip==2)
{
if(n1==n2)
{
printf("NU\n");
continue;
}
if(t1==t2)
printf("DA\n");
else
printf("NU\n");
continue;
}
if(t1==t2)
continue;
if(grad[t1]<grad[t2])
{
tata[n1]=n2;
grad[t2]+=grad[t1];
}
else
{
tata[n2]=n1;
grad[t1]+=grad[t2];
}
}
return 0;
}