Cod sursa(job #820284)
| Utilizator | Data | 20 noiembrie 2012 17:40:18 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
# include <stdio.h>
int n,m,t[100010],x,y,i,op;
int radx(int nod)
{
if (t[nod]!=nod)
t[nod]=radx(t[nod]);
return t[nod];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d\n",&n,&m);
for (i=1; i<=n; i++)
t[i]=i;
for (i=1; i<=m; i++)
{
scanf("%d %d %d\n",&op,&x,&y);
if (op==1)
{
if (radx(x)!=radx(y))
{
t[t[y]]=t[x];
}
}
else
{
int q=radx(x);
int r=radx(y);
if (t[x]==t[y]) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}