Pagini recente » Cod sursa (job #1255285) | Cod sursa (job #1013604) | Cod sursa (job #2566054) | Cod sursa (job #1862992) | Cod sursa (job #826329)
Cod sursa(job #826329)
#include<stdio.h>
int t[100001],h[100001],n,m;
int find(int x){
if(t[x]==x){
return x;
}
return find(t[x]);
}
void unite(int u,int v){
if(h[u]==h[v]){
t[v]=u;;
h[v]++;
}
else if(h[u]<h[v]){
t[u]=v;
}
else{
t[v]=u;
}
}
void init(){
int i;
for(i=1;i<=n;i++){
t[i]=i;
}
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int x,i,a,b,fa,fb;
scanf("%d%d",&n,&m);
init();
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&a,&b);
fa=find(a);
fb=find(b);
if(x==1&&fa!=fb){
unite(a,b);
}
if(x==2){
if(fa==fb){
printf("DA\n");
}
if(fa!=fb){
printf("NU\n");
}
}
}
return 0;
}