Pagini recente » Cod sursa (job #927995) | Cod sursa (job #106201) | Cod sursa (job #1555762) | Cod sursa (job #1347959) | Cod sursa (job #2082560)
#include <fstream>
#include <vector>
using namespace std;
int main() {
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, q;
fin >> n >> q;
vector<int> f(n);
for (int i = 0; i < n; ++i) {
f[i] = i;
}
auto find = [&f](int x) -> int {
int y, p;
for (y = x; y != f[y]; y = f[y]);
for (; x != y; x = p) {
p = f[x];
f[x] = y;
}
return y;
};
while (q-- > 0) {
int t, x, y;
fin >> t >> x >> y;
x--; y--;
if (t == 1) {
f[find(x)] = y;
} else {
fout << (find(x) == find(y) ? "DA\n": "NU\n");
}
}
fin.close();
fout.close();
}