Pagini recente » Cod sursa (job #3253600) | Cod sursa (job #1369348) | Cod sursa (job #86674) | Cod sursa (job #381104) | Cod sursa (job #2932353)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int dim = 1e5 + 5;
int parent[dim], rang[dim], n, m;
int Find(int u) {
while (parent[u] != 0) {
u = parent[u];
}
return u;
}
void Union(int u, int v) {
int ru, rv;
ru = Find(u);
rv = Find(v);
if (rang[ru] < rang[rv]) {
parent[ru] = rv;
} else {
parent[rv] = ru;
if (rang[ru] == rang[rv]) {
rang[rv]++;
}
}
}
int main() {
in >> n >> m;
int tip, x, y;
while (m--) {
in >> tip >> x >> y;
if (tip == 1) Union(x, y);
else {
out << ((Find(x) == Find(y)) ? "DA\n" : "NU\n");
}
}
return 0;
}