Pagini recente » Cod sursa (job #707424) | Istoria paginii runda/abvcf/clasament | Cod sursa (job #1611963) | Cod sursa (job #1276805) | Cod sursa (job #2938101)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m;
vector<int> parinti;
vector<int> ranc;
int get_root(int nod){
if (parinti[nod] != 0) {
parinti[nod] = get_root(parinti[nod]);
return parinti[nod];
}
return nod;
}
int main() {
f >> n >> m;
parinti.resize(n + 1);
ranc.resize(n + 1);
for (int i = 1; i <= n; i++) {
parinti[i] = 0;
ranc[i] = 1;
}
for (int i = 1; i <= m; i++) {
int cod, x, y;
f >> cod >> x >> y;
if (cod == 1) {
int rx = get_root(x);
int ry = get_root(y);
if (rx != ry) {
if (ranc[rx] > ranc[ry]) {
parinti[ry] = rx;
ranc[rx] += ranc[ry];
}
else {
parinti[rx] = ry;
ranc[ry] += ranc[rx];
}
}
}
else {
int rx = get_root(x);
int ry = get_root(y);
if (rx == ry) {
g << "DA" << endl;
}
else {
g << "NU" << endl;
}
}
}
return 0;
}