Pagini recente » Cod sursa (job #825814) | Cod sursa (job #941146) | Cod sursa (job #193006) | Cod sursa (job #1428314) | Cod sursa (job #2684589)
#include <iostream>
#include <fstream>
#define maxv 100005
std::ifstream fin("disjoint.in");
std::ofstream fout("disjoint.out");
int parent[maxv];
int rank[maxv];
void addSet(int node){
parent[node] = node;
}
int findRoot(int node){
if(parent[node] == node)
return node;
return findRoot(parent[node]);
}
void unionSets(int node1, int node2){
node1 = findRoot(node1);
node2 = findRoot(node2);
if(node1 == node2) return;
parent[node2] = node1;
}
void readInput(){
int V, Q, type, node1, node2;
fin >> V >> Q;
for(int i=1; i<=V; i++)
addSet(i);
while(Q --){
fin >> type >> node1 >> node2;
if(type == 1)
unionSets(node1, node2);
else{
if(findRoot(node1) == findRoot(node2)) fout << "DA\n";
else fout << "NU\n";
}
}
}
int main(){
readInput();
return 0;
}