Pagini recente » Cod sursa (job #1242811) | Cod sursa (job #2583700) | Cod sursa (job #1819451) | Cod sursa (job #2628233) | Cod sursa (job #2919052)
#include <fstream>
using namespace std;
const int MAX_N = 1e5;
int parent[MAX_N + 1], cnt[MAX_N + 1];
int n, q;
void init() {
for (int i = 1; i <= n; i++) {
parent[i] = i;
cnt[i] = 1;
}
}
int jump(int x) {
if (x == parent[x]) {
return x;
}
return parent[x] = jump(parent[x]);
}
void unite(int u, int v) {
u = jump(u);
v = jump(v);
if (u != v) {
if (cnt[u] < cnt[v]) {
swap(u, v);
}
parent[v] = u;
cnt[u] += cnt[v];
}
}
int main() {
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
cin >> n >> q;
init();
while (q--) {
int t, u, v;
cin >> t >> u >> v;
if (t == 1) {
unite(u, v);
} else {
if (jump(u) == jump(v)) {
cout << "DA\n";
} else {
cout << "NU\n";
}
}
}
return 0;
}