Pagini recente » Cod sursa (job #632330) | Cod sursa (job #2402069) | Cod sursa (job #1592261) | Cod sursa (job #161073) | Cod sursa (job #340628)
Cod sursa(job #340628)
#include <stdio.h>
#define Nmax 100020
int n,m,i,cod,x,y;
int tata[Nmax],rank[Nmax];
void merge(int x,int y){
if( rank[x] > rank[y] )
tata[y]=x;
else tata[x]=y;
if(rank[x] == rank[y]) rank[y]++;
}
int find(int x){
int r,y;
for( r=x; tata[r] !=r; r=tata[r]);
while(tata[x] != x){
y = tata[x];
tata[x] =r;
x= y;
}
return r;
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
rank[i]=1;
tata[i]=i;
}
for(i=1;i<=m;++i){
scanf("%d%d%d",&cod,&x,&y);
if(cod ==1 ) merge(find(x),find(y));
else
if(find(x) == find(y)) printf("DA\n");
else printf("NU\n");
}
fclose(stdin); fclose(stdout);
return 0;
}