Cod sursa(job #600427)
| Utilizator | Data | 1 iulie 2011 17:29:30 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.41 kb |
#include <cstdio>
#include <fstream>
using namespace std;
int d[131072];
int find (int x){
if(d[x])
return find(d[x]);
return x;}
int main ()
{
int n,m,x,y,t,a,b;
ifstream f ("disjoint.in");
freopen ("disjoint.out","w",stdout);
for(f>>n>>m;m;--m){
f>>t>>x>>y;
a=find(x);
b=find(y);
if(t==1)
d[a]=b;
else
if(a==b)
printf("DA\n");
else
printf("NU\n");
}
return 0;}
