Pagini recente » Cod sursa (job #2951898) | Cod sursa (job #2750129) | Cod sursa (job #133730) | Cod sursa (job #2940166) | Cod sursa (job #2861653)
#include <algorithm>
#include <cstdio>
#include <cstdlib>
int parent[2 + 100000];
int getRoot(int u) {
if (u == parent[u])
return u;
else
return parent[u] = getRoot(parent[u]);
}
bool areJoined(int u, int v) {
return getRoot(u) == getRoot(v);
}
void join(int u, int v) {
u = getRoot(u);
v = getRoot(v);
if (u != v) {
if (rand() % 2)
std::swap(u, v);
parent[u] = v;
}
}
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;
for (int i = 1; i <= m; i++) {
int type, u, v;
scanf("%d%d%d", &type, &u, &v);
if (type == 1)
join(u, v);
else {
if (areJoined(u, v))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}