Cod sursa(job #302257)
| Utilizator | Data | 8 aprilie 2009 19:33:53 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include <stdio.h>
#define NM 100001
int r[NM];
int n,m;
int rad(int x)
{if (r[x]==x) return x;
r[x]=rad(r[x]);
return r[x];
}
int main()
{freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
int i;
for (i=1;i<=n;i++) r[i]=i;
int x,y;
while (m--)
{scanf("%d %d %d",&i,&x,&y);
if (i==1)
{r[rad(x)]=rad(y);
}
else
{if (rad(x)==rad(y)) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}
