Pagini recente » Cod sursa (job #1179183) | Cod sursa (job #2595424) | Cod sursa (job #2624545) | Profil ionanghelina | Cod sursa (job #664870)
Cod sursa(job #664870)
#include<stdio.h>
int RG[100002],T[100002],N,M,i,t,y,x;
int find(int x)
{
int R=x,y;
while (R!=T[R]) R=T[R];
while (x!=R){
y=T[x];
T[x]=R;
x=y;}
return R;
}
void unite(int x,int y)
{
if (RG[x]>RG[y]) T[y]=x;
else T[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++) T[i]=i,RG[i]=1;
for (i=1;i<=M;i++)
{
scanf("%d%d%d",&t,&x,&y);
if (t==1) unite(find(x),find(y));
else if (find(x)==find(y)) printf("DA\n");
else printf("NU\n");
}
}