Pagini recente » Cod sursa (job #766889) | Cod sursa (job #1892053) | Cod sursa (job #2743535) | Cod sursa (job #1114515) | Cod sursa (job #2401071)
#include <iostream>
#include <fstream>
using namespace std;
int t[100010], nr[100010];
int find_f (int x)
{
return (x == t[x]) ? x : t[x] = find_f (t[x]);
}
int main()
{
ifstream in ("disjoint.in");
ofstream out ("disjoint.out");
int n, m, o, x, y, i;
in >> n >> m;
for (i = 1; i <= n; ++i) {
t[i] = i;
nr[i] = 1;
}
for (i = 0; i < m; ++i) {
in >> o >> x >> y;
if (o == 1) {
x = find_f (x);
y = find_f (y);
if (x > y) {t[y] = x; nr[x] += nr[y];}
else {t[x] = y; nr[y] += nr[x];}
}
else {
out << ((find_f(x) == find_f(y)) ? "DA\n" : "NU\n");
}
}
return 0;
}