Cod sursa(job #963469)
#include <fstream>
using namespace std;
const int N = 100005;
int n, m, padure[N];
int find(int x)
{
if(padure[x] != x)
padure[x] = find(padure[x]);
return padure[x];
}
void unite(int x, int y)
{
padure[x] = y;
}
int main()
{
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
cin >> n >> m;
for(int i = 1 ; i <= n ; ++ i)
padure[i] = i;
for(int i = 1 ; i <= m ; ++ i)
{
int cod, x, y;
cin >> cod >> x >> y;
if(cod == 1)
unite(find(x), find(y));
else if( find(x) == find(y) )
cout << "DA\n";
else cout << "NU\n";
}
return 0;
}