Cod sursa(job #562844)
| Utilizator | Data | 23 martie 2011 23:00:33 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include <stdio.h>
#define Dim 100001
int T[Dim];
int tata(int nod)
{
if(nod!=T[nod]) T[nod]=tata(T[nod]);
return T[nod];
}
int main()
{
int M,N,x,y,i,cod;
freopen("disjoint.in","r",stdin);
scanf("%d%d",&N,&M);
freopen("disjoint.out","w",stdout);
for(i=1;i<=N;i++) T[i]=i;
for(i=1;i<=M;i++)
{
scanf("%d%d%d",&cod,&x,&y);
x=tata(x);
y=tata(y);
if(cod==1) T[x]=y;
else x==y ? printf("DA\n") : printf("NU\n");
}
return 0;
}
