Pagini recente » Cod sursa (job #1788481) | Cod sursa (job #2688927) | Cod sursa (job #969406) | Cod sursa (job #1278831) | Cod sursa (job #1944176)
#include<stdio.h>
#include<iostream>
#include<vector>
#define v_i vector<int>
#define v_ip int*
using namespace std;
int n, m;
int type, x, y;
int t[100010], r[100010];
void unify(v_ip t, v_ip r,int x,int y)
{
if (r[x] < r[y])
{
t[x] = y;
}
else
{
t[y] = x;
}
if (r[x] == r[y])
{
r[x]++;
}
}
int found(v_ip t, int x)
{
int rad;
for (rad = x; rad != t[rad]; rad = t[rad]);
while (x != t[x])
{
int aux = t[x];
t[x] = rad;
x = aux;
}
return rad;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &n, &m);
////v_i t(100010);
//v_i r(100010);
for (int i = 1; i <= n; ++i)
{
t[i] = i;
r[i] = 1;
}
for (int i = 1; i <= m; i++)
{
int tip;
scanf("%d%d%d", &tip, &x, &y);
if (tip == 1)
{
unify(t,r, x, y);
}
else
{
if (found(t, x) == found(t, y))
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
}
fclose(stdin);
fclose(stdout);
return 0;
}