Pagini recente » Cod sursa (job #2989605) | Cod sursa (job #439168) | Cod sursa (job #438504) | Cod sursa (job #564684) | Cod sursa (job #672742)
Cod sursa(job #672742)
#include <stdio.h>
struct node {
node()
{
value = parent = 0;
}
node(int i)
{
value = parent = i;
}
int value;
int parent;
};
node nodes[100001];
int get_parent(int x)
{
if (nodes[x].parent == nodes[x].value)
return x;
int p = get_parent(nodes[x].parent);
nodes[x].parent = p;
return p;
}
void set_union(int x, int y)
{
int p_x = get_parent(x);
int p_y = get_parent(y);
if (p_x == p_y)
return;
nodes[p_y].parent = p_x;
}
int main()
{
int n, m;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for (int i = 1; i <= n; i++)
nodes[i] = node(i);
for (int i = 0; i < m; i++) {
int code, x, y;
scanf("%d %d %d\n", &code, &x, &y);
if (code == 1)
set_union(x, y);
else if (code == 2) {
if (get_parent(x) == get_parent(y))
printf("DA\n");
else
printf("NU\n");
}
}
}