Cod sursa(job #662878)
| Utilizator | Data | 17 ianuarie 2012 09:26:24 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.68 kb |
#include <stdio.h>
#define max 100001
using namespace std;
int a,b,c,d,e,v[max];
int gaseste(int x)
{
if (v[x]!=x)
{
v[x]=gaseste(v[x]);
}
return v[x];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&a,&b);
while(a--)
{
v[a]=a;
}
while(b--)
{
scanf("%d%d%d",&c,&d,&e);
if(c==1)
v[gaseste(d)]=gaseste(e);
else
{
if(gaseste(d)==gaseste(e))
printf("DA\n");
else
printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}
