Cod sursa(job #3304114)
| Utilizator | Data | 20 iulie 2025 21:20:35 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <bits/stdc++.h>
using namespace std;
int parent[100005];
int find(int x) {
if (parent[x] == x)
return x;
return find(parent[x]);
}
void join(int x, int y) { parent[find(x)] = find(y); }
int main() {
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
parent[i] = i;
int type, x, y;
while (m--) {
cin >> type >> x >> y;
if (type == 1) {
join(x, y);
} else {
if (find(x) == find(y))
cout << "DA\n";
else
cout << "NU\n";
}
}
}