Pagini recente » Cod sursa (job #459937) | Cod sursa (job #2937674) | Cod sursa (job #1074126) | Cod sursa (job #932605) | Cod sursa (job #1542304)
#include<cstdio>
int fii[100001],parinte[100001],i,j,n,m,k;
int find(int nod)
{
int nod1=nod;
while(parinte[nod1]!=nod1)
nod1=parinte[nod1];
int x=nod1;
nod1=nod;
while(parinte[nod1]!=nod1)
{
parinte[nod1]=x;
nod1=parinte[nod1];
}
return x;
}
void join(int nod1,int nod2)
{
int x=find(nod1);
int y=find(nod2);
if(fii[x]<fii[y])
{
parinte[x]=y;
fii[y]+=fii[x];
}
else
{
parinte[y]=x;
fii[x]+=fii[y];
}
}
int main ()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
parinte[i]=i;
fii[i]=1;
}
for(i=1;i<=m;i++)
{
int k,x,y;
scanf("%d%d%d",&k,&x,&y);
if(k==2&&find(x)==find(y))
printf("DA\n");
else
if(k==2)
printf("NU\n");
else
join(x,y);
}
return 0;
}