Pagini recente » Cod sursa (job #1873048) | Cod sursa (job #2039239) | Cod sursa (job #144814) | Istoria paginii runda/simulare_oji_10_1/clasament | Cod sursa (job #2968288)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int NMAX = 1e5 + 10;
int n, m, p[NMAX];
int find(int x) {
int ans = x, aux = x;
while (p[ans] != ans)
ans = p[ans];
while (aux != ans) {
int cpy = aux;
aux = p[aux];
p[cpy] = ans;
}
return ans;
}
void unite(int x, int y) {
p[find(x)] = find(y);
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++)
p[i] = i;
while (m--) {
int op, x, y;
cin >> op >> x >> y;
if (op == 1) unite(x, y);
else cout << (find(x) == find(y) ? "DA\n" : "NU\n");
}
}