Pagini recente » Cod sursa (job #2406165) | Cod sursa (job #1984280) | Cod sursa (job #2564404) | Cod sursa (job #56733) | Cod sursa (job #3193062)
#include <fstream>
#include <vector>
std::vector<int> parent(100002);
int find_root(int node) {
if (parent[node] == node)
return node;
return parent[node] = find_root(parent[node]);
}
void merge_nodes(int node1, int node2) {
node1 = find_root(node1);
node2 = find_root(node2);
parent[node1] = node2;
}
int main() {
std::ifstream fin("disjoint.in");
std::ofstream fout("disjoint.out");
int nodes, q;
fin >> nodes >> q;
for (int i = 1; i <= nodes; i++)
parent[i] = i;
while (q--) {
int op, node1, node2;
fin >> op >> node1 >> node2;
if (op == 1)
merge_nodes(node1, node2);
else {
int root1 = find_root(node1);
int root2 = find_root(node2);
if (root1 != root2)
fout << "NU\n";
else
fout << "DA\n";
}
}
return 0;
}