Pagini recente » Cod sursa (job #1968047) | Cod sursa (job #1026314) | Cod sursa (job #2283374) | Cod sursa (job #1070843) | Cod sursa (job #1687564)
#include <cstdio>
using namespace std;
int parent[100004];
int rang[100004];
int Find(int x)
{
if (x == parent[x])
return x;
parent[x] = Find(parent[x]);
return parent[x];
}
void Union(int x, int y)
{
x = Find(x);
y = Find(y);
if (x == y)
return;
if (rang[x] > rang[y])
{
parent[y] = x;
rang[x]++;
}
else
{
parent[x] = y;
rang[y]++;
}
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
{
parent[i] = i;
rang[i] = 0;
}
for (int i = 1, t, x, y; i <= m; i++)
{
scanf("%d%d%d", &t, &x, &y);
if (t == 1)
{
Union(x, y);
}
else
{
if (Find(x) == Find(y))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}