Pagini recente » Cod sursa (job #529210) | Cod sursa (job #1947653) | Cod sursa (job #1409209) | Cod sursa (job #522481) | Cod sursa (job #286505)
Cod sursa(job #286505)
#include <stdio.h>
int parinte[1000],rg[1000],x,rez,m,n,c,y,i,q;
int first(int x)
{int rez,aux;
rez=x;while(parinte[rez]!=rez)rez=parinte[rez];
while(parinte[x]!=x)
{aux=parinte[x];
parinte[x]=rez;
x=aux;
}
return rez;
}
void uneste(int x,int y)
{if(rg[x]>rg[y])parinte[y]=x;
else parinte[x]=y;
if(rg[x]==rg[y])rg[y]++;
}
int main()
{freopen("disjoint.in","r",stdin);freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){rg[i]=1;parinte[i]=i;}
for(i=1;i<=m;i++)
{scanf("%d%d%d",&q,&x,&y);
if(q==1)
{uneste(first(x),first(y));
}
else if(first(x)==first(y))printf("DA\n");else printf("NU\n");
}
fclose(stdin);fclose(stdout);
return 0;
}