Cod sursa(job #803970)
| Utilizator | Data | 28 octombrie 2012 17:34:40 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include<cstdio>
#define BM 100005
int mp[BM];
int a[BM],n,m;
int rad(int x){
if(mp[x]==x)return x;
mp[x]=rad(mp[x]);
return mp[x];
}
int main () {
int i,op,x,y,j,k;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;++i)mp[i]=i;
for(i=1;i<=m;++i){
scanf("%d %d %d",&op,&x,&y);
j=rad(x);
k=rad(y);
if(op==1){
if(j>k)mp[j]=k;
else mp[k]=j;
}
else{
if(j==k)printf("DA\n");
else printf("NU\n");
}
}
return 0;
}
