Pagini recente » Cod sursa (job #1236348) | Cod sursa (job #1174168) | Cod sursa (job #3225045) | Cod sursa (job #836983) | Cod sursa (job #2575558)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int MAXN = 100005;
int fat[MAXN], dep[MAXN], n, m;
int findFather(int node)
{
if (fat[node] == node)
return node;
fat[node] = findFather(fat[node]);
return fat[node];
}
void reunite(int x, int y)
{
if (dep[x] >= dep[y]) {
fat[y] = fat[x];
++dep[x];
}
else {
fat[x] = fat[y];
++dep[y];
}
}
void init()
{
for (int i = 1; i <= n; ++i)
fat[i] = i;
}
int main()
{
fin >> n >> m;
init();
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 {
if (findFather(x) == findFather(y))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}