Cod sursa(job #433828)
| Utilizator | Data | 4 aprilie 2010 14:49:41 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <stdio.h>
#define IN "disjoint.in"
#define OUT "disjoint.out"
#define L 100005
using namespace std;
int T[L];
int n, m, a, b, c;
int Tata(int a)
{
if (a==T[a])
return a;
return T[a]=Tata(T[a]);
}
int main ()
{
freopen (IN ,"r", stdin);
freopen (OUT , "w", stdout);
scanf ("%d %d",&n, &m);
for (int i=1;i<=n;i++)
T[i]=i;
while (m--)
{
scanf ("%d %d %d", &a, &b, &c);
if (a==1)
T[Tata(b)]=c;
else
printf("%s\n", Tata(b)==Tata(c)?"DA":"NU");
}
return 0;
}
