Pagini recente » Cod sursa (job #1279048) | Cod sursa (job #373458) | Cod sursa (job #1856350) | Cod sursa (job #2104436) | Cod sursa (job #1701430)
#include <fstream>
#include <iostream>
int father[100000];
int N, K;
void unite(int i, int j) {
father[i] = j;
}
int find(int node) {
if(node == father[node])
return node;
return find(father[node]);
}
void init_subsets() {
for(int i = 1; i <= N; ++i) {
father[i] = i ;
}
}
int main() {
std::ifstream fin("disjoint.in");
std::ofstream fout("disjoint.out");
int i, comm, arg1, arg2;
int father_arg1, father_arg2;
fin >> N >> K;
init_subsets();
for (i = 1; i <= K; ++i) {
fin >> comm >> arg1 >> arg2;
father_arg1 = find(arg1);
father_arg2 = find(arg2);
if(comm == 2) {
if (father_arg1 == father_arg2)
fout << "DA\n";
else
fout << "NU\n";
}
else
unite(father_arg1, father_arg2);
}
fin.close();
fout.close();
return 0;
}