Cod sursa(job #653328)
| Utilizator | Data | 27 decembrie 2011 19:37:08 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 0 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include<cstdio>
#define maxn 100001
using namespace std;
int tata[maxn], n, m, cod, x, y;
int find(int i)
{if(tata[i]!=i)
tata[i]=find(tata[i]);
return tata[i];
}
int main()
{freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &n, &m);
for(; n; n--)
tata[n]=n;
for(; m; m--)
{scanf("%d %d %d", &cod, &x, &y);
if(cod==1)
tata[find(x)]=find(y);
else {if(find(x)==find(y))
printf("DA\n");
else printf("NU\n");;
}
}
return 0;
}