Pagini recente » Cod sursa (job #545429) | Cod sursa (job #1839906) | Cod sursa (job #3179463) | Cod sursa (job #1762120) | Cod sursa (job #2988756)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 100005;
int N, M;
int rang[NMAX], dad[NMAX];
int do_find(int nod){
if(dad[nod] == nod){
return nod;
}
int ans = do_find(dad[nod]);
dad[nod] = ans;
return ans;
}
void do_union(int nod1, int nod2){
if(rang[nod1] < rang[nod2]){
dad[nod1] = nod2;
}else{
dad[nod2] = nod1;
}
}
int main()
{
fin >> N >> M;
for(int i = 1; i <= N; i++){
dad[i] = i;
rang[i] = 0;
}
for(int i = 1; i <= M; i++){
int op, x, y;
fin >> op >> x >> y;
if(op == 1){
do_union(do_find(x), do_find(y));
}else{
if(do_find(x) == do_find(y)){
fout << "DA\n";
}else{
fout << "NU\n";
}
}
}
return 0;
}