Pagini recente » Cod sursa (job #2880429) | Cod sursa (job #2595699) | Cod sursa (job #1325650) | Cod sursa (job #1190476) | Cod sursa (job #1660735)
#include <bits/stdc++.h>
using namespace std;
const int lim = 1 << 17;
int tata[lim], rang[lim];
void init()
{
for(int i = 0; i < lim; ++i)
tata[i] = i, rang[i] = 1;
}
int father(int x)
{
if(x == tata[x])
return x;
return tata[x] = father(tata[x]);
}
void unite(int x , int y)
{
int tx = father(x), ty = father(y);
if(rang[tx] > rang[ty])
tata[ty] = tx;
else tata[tx] = ty;
if(rang[tx] == rang[ty])
++rang[ty];
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
init();
int N, M;
scanf("%d %d", &N, &M);
while(M--)
{
int kind, x, y;
scanf("%d%d%d", &kind, &x, &y);
if(kind == 1)
unite(x , y);
else
printf("%s\n", father(x) == father(y) ? "DA" : "NU");
}
return 0;
}