Pagini recente » Cod sursa (job #2688614) | Cod sursa (job #377754) | Cod sursa (job #1566274) | Cod sursa (job #1686247) | Cod sursa (job #1944179)
#include<cstdio>
int i, n, m, t[100010], r[100010];
int gas(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;
}
void uneste(int x, int y)
{
if (r[x]<r[y])
t[x] = y;
else
t[y] = x;
if (r[x] == r[y]) r[x]++;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= n; ++i)
{
t[i] = i;
r[i] = 1;
}
for (i = 1; i <= m; ++i)
{
int tip, x, y;
scanf("%d%d%d", &tip, &x, &y);
if (tip == 1) uneste(gas(x), gas(y));
else
{
if (gas(x) == gas(y)) printf("DA\n");
else printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}