Pagini recente » Cod sursa (job #573478) | Cod sursa (job #2464097) | Cod sursa (job #1006168) | Cod sursa (job #1243465) | Cod sursa (job #2512449)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int MAXN = 100010;
int fat[MAXN], dep[MAXN], n, m;
void initialize() {
for (int i = 1; i <= n; ++i)
fat[i] = i;
}
int findFather(int node) {
if (node == fat[node])
return node;
int f = findFather(fat[node]);
fat[node] = f;
return f;
}
void reunite(int x, int y) {
if (dep[x] == dep[y])
dep[x] = dep[y] + 1;
fat[y] = fat[x];
dep[y] = dep[x];
}
int main() {
fin >> n >> m;
initialize();
for (int i = 0; i < m; ++i) {
int type, x, y;
fin >> type >> x >> y;
if (type == 1) {
x = findFather(x);
y = findFather(y);
reunite(x, y);
}
else {
x = findFather(x);
y = findFather(y);
if (x == y)
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}