Cod sursa(job #2661240)
| Utilizator | Data | 21 octombrie 2020 17:13:02 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int p[NMAX];
int Find(int x) {
return x == p[x] ? x : p[x] = Find(p[x]);
}
void Union(int x, int y) {
p[Find[x]] = y;
}
int main() {
int N, M;
fin >> N >> M;
for (int i = 1; i <= N; i++) {
p[i] = i;
}
for (int q, x, y; M; --M) {
fin >> q >> x >> y;
if (q == 1) {
Union(x, y);
} else {
fout << (Find(x) == Find(y) ? "DA" : "NU") << '\n';
}
}
return 0;
}