Pagini recente » Cod sursa (job #1051417) | Cod sursa (job #2324185) | Cod sursa (job #1438994) | Cod sursa (job #2121467) | Cod sursa (job #2512541)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
int tre[200041];
void nuke(){
for(int i = 1; i <= n; ++i){
tre[i] = i;
}
}
int dad(int a){
int r = a;
if(a != tre[a]){
r = dad(tre[a]);
tre[a] = r;
}
return r;
}
void reu(int a, int b){
a = dad(a);
b = dad(b);
tre[a] = b;
}
bool fid(int a, int b){
a = dad(a);
b = dad(b);
return (a==b);
}
int main(){
fin >> n >> m;
nuke();
for(int i = 0; i < m; ++i){
int op, a, b;
fin >> op >> a >> b;
if(op == 1){
reu(a, b);
}else{
if(fid(a, b)){
fout << "DA";
}else{
fout << "NU";
}
fout << "\n";
}
}
return 0;
}