Pagini recente » Cod sursa (job #64111) | Cod sursa (job #2487417) | Cod sursa (job #3195865) | Cod sursa (job #2811703) | Cod sursa (job #3208004)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
#define VI vector<int>
VI tata;
int n, m;
int findRoot(int node) {
if (tata[node] == 0) {
return node;
}
return findRoot(tata[node]);
}
void integrate(int nodeX, int nodeY) {
tata[nodeY] = findRoot(nodeX);
}
void printTati() {
for (int i = 1; i < tata.size(); ++i) {
fout << tata[i] << ' ';
}
fout << '\n';
for (int i = 1; i <= n; ++i) {
fout << i << ' ';
}
fout << '\n';
}
int main() {
fin >> n >> m;
tata = VI(n + 1, 0);
for (int i = 0; i < m; ++i) {
//printTati(), fout << '\n';
int opType, x, y;
fin >> opType >> x >> y;
if (opType == 2) {
if (findRoot(x) == findRoot(y)) {
fout << "DA\n";
} else {
fout << "NU\n";
}
} else {
integrate(x, y);
}
}
}