Cod sursa(job #233773)
| Utilizator | Data | 19 decembrie 2008 10:09:35 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.38 kb |
#include <stdio.h>
int A[100000];
int go(int x)
{
if (A[x]==0) return x;
else go(A[x]);
}
int main()
{
FILE *in = fopen("disjoint.in","r");
FILE *out = fopen("disjoint.out","w");
int n,m,o,x,y;
fscanf(in,"%d%d",&n,&m);
while (m)
{
m--;
fscanf(in,"%d%d%d",&o,&x,&y);
if (o==1) A[go(y)]=go(x);
else
if (go(x)==go(y)) fprintf(out,"DA\n");
else fprintf(out,"NU\n");
}
}
