Pagini recente » Cod sursa (job #2228614) | Cod sursa (job #278537) | Cod sursa (job #3306763) | Cod sursa (job #3357431) | Cod sursa (job #3358018)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 100001;
int t[NMAX], r[NMAX];
int rad(int x) {
if (t[x] != x)
t[x] = rad(t[x]);
return t[x];
}
void unite(int x, int y) {
x = rad(x); y = rad(y);
if (x == y) return;
if (r[x] < r[y]) t[x] = y;
else {
t[y] = x;
if (r[x] == r[y]) ++r[x];
}
}
int main() {
int n, m, op, x, y;
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
t[i] = i; r[i] = 0;
}
while (m--) {
fin >> op >> x >> y;
if (op == 1) unite(x, y);
else fout << (rad(x) == rad(y) ? "DA\n" : "NU\n");
}
return 0;
}