Pagini recente » Borderou de evaluare (job #2280503) | Cod sursa (job #1062342) | Cod sursa (job #565508) | Cod sursa (job #2556777) | 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();
}