Pagini recente » Cod sursa (job #1272830) | Cod sursa (job #1362344) | Cod sursa (job #1962479) | Cod sursa (job #157058) | Cod sursa (job #2534845)
#include <bits/stdc++.h>
#define MAXN 100005
std::ifstream input ("disjoint.in");
std::ofstream output("disjoint.out");
int N, M;
int rang[MAXN], parent[MAXN];
int _find(int x) {
if (parent[x]) return parent[x] = _find(parent[x]);
return x;
}
void _union(int x, int y) {
if (x == y) return;
if (rang[x] > rang[y]) parent[y] = x;
else parent[x] = y;
if (rang[x] == rang[y]) ++ rang[y];
}
void _query(int x, int y) {
output << (_find(x) == _find(y) ? "DA\n" : "NU\n");
}
int main()
{
input >> N >> M;
for (int i=1, cod, x, y; i<=M; ++i) {
input >> cod >> x >> y;
if (cod == 1) _union(x, y);
else _query(x, y);
}
return 0;
}