Pagini recente » Cod sursa (job #112211) | Cod sursa (job #3260074) | Cod sursa (job #1797897) | Cod sursa (job #2382872) | Cod sursa (job #240534)
Cod sursa(job #240534)
#include<stdio.h>
#define N 100100
int nr[N],rang[N];
int tata(int x){
int rad,y;
for(rad=x;nr[rad]!=rad;rad=nr[rad])
;
while(nr[x]!=x){
y=nr[x];
nr[x]=rad;
x=y;
}
return rad;
}
void join(int x,int y){
if(rang[x]>rang[y])
nr[y]=x;
else
nr[y]=x;
if(rang[x]==rang[y])
++rang[y];
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m,i,x,a,b;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
nr[i]=i;
for(i=0;i<m;++i){
scanf("%d%d%d",&x,&a,&b);
if(x==1)
join(a,b);
else{
if(tata(a)==tata(b))
printf("DA\n");
else
printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}