Pagini recente » Cod sursa (job #1289455) | Cod sursa (job #2689636) | Cod sursa (job #2961151) | Cod sursa (job #317842) | Cod sursa (job #3236069)
#include <fstream>
#define NMAX 1000000
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int tata[NMAX + 1], rang[NMAX + 1];
int find(int x) {
if (tata[x]){
int k = find(tata[x]);
tata[x] = k;
return k;
}
return x;
}
void U(int u, int v) {
u = find(u);
v = find(v);
if (rang[u] > rang[v])
tata[v] = u;
else {
tata[u] = v;
if (rang[u] == rang[v])
++rang[u];
}
}
int main() {
int m;
in >> m >> m;
while (m--) {
int op, u, v;
in >> op >> u >> v;
if (op == 1){
U(u, v);
}
else {
if (find(u) == find(v)) {
out << "DA\n";
}
else {
out << "NU\n";
}
}
}
return 0;
}