Pagini recente » Cod sursa (job #1664577) | Cod sursa (job #2392817) | Cod sursa (job #2289901) | Cod sursa (job #2832618) | Cod sursa (job #2000627)
#include <cstdio>
using namespace std;
const int NMAX = 100005;
int h[NMAX];
int t[NMAX];
int FindSet(int x)
{
if(t[x] == x)
return x;
return FindSet(t[x]);
}
void UnionSet(int x, int y)
{
if(h[x] == h[y]) {
++h[x];
t[y] = x;
}
else if(h[x] > h[y]) {
t[y] = x;
}
else {
t[x] = y;
}
}
int main()
{
int n, m, i, x, y, op;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d", &n, &m);
for(i = 1;i <= n; ++i) {
h[i] = 1;
t[i] = i;
}
for(i = 1;i <= m; ++i) {
scanf("%d%d%d", &op, &x, &y);
x = FindSet(x);
y = FindSet(y);
if(op == 1) {
UnionSet(x, y);
}
else {
if(x == y) {
printf("DA\n");
}
else {
printf("NU\n");
}
}
}
return 0;
}