Pagini recente » Cod sursa (job #1684396) | Cod sursa (job #1858897) | Cod sursa (job #843964) | Cod sursa (job #1490459) | Cod sursa (job #1701425)
#include <stdio.h>
#include <fstream>
int father[100000];
int N, K;
void union(int i, int j) {
father[i] = j;
}
int find(int node) {
if(node == father[node])
return node;
while(node != father[node]) {
node = father[node];
}
return 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
union(father_arg1, father_arg2);
}
fin.close();
fout.close();
return 0;
}