Cod sursa(job #731968)
#include <cstdio>
using namespace std;
const int MAXN = 100010;
int tata[MAXN];
int n,m;
int radacina(int a)
{
int aux;
int r = a;
while (tata[r] != 0)
r = tata[r];
while (tata[a] != 0)
{
aux = tata[a];
tata[a] = r;
a = aux;
}
return r;
}
void unire(int a,int b)
{
int r = radacina(a);
tata[b] = r;
}
inline bool e_aceeasi_multime(int a,int b)
{
return radacina(a) == radacina(b);
}
int main()
{
int cod;
int x,y;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf ("%d%d",&n,&m);
for (int i = 1;i <= m;++i)
{
scanf ("%d%d%d",&cod,&x,&y);
if (cod == 1)
unire(x,y);
if (cod == 2)
printf ((e_aceeasi_multime(x,y))?"DA\n":"NU\n");
}
return 0;
}