Cod sursa(job #2043099)
Utilizator | Miruna Mitu MirunaM | Data | 19 octombrie 2017 17:13:59 |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.67 kb |
#include<stdio.h>
int tata[100005];
int dad(int x){
if(tata[x]==x)
return x;
else
return tata[x]=dad(tata[x]);
}
void minion(int x,int y){
int tx,ty;
tx=dad(x);
ty=dad(y);
tata[tx]=ty;
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m,i,tip,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
tata[i]=i;
for(i=1;i<=m;i++){
scanf("%d%d%d",&tip,&x,&y);
if(tip==1)
minion(x,y);
else
if(dad(x)==dad(y))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}