Pagini recente » Cod sursa (job #451837) | Cod sursa (job #1552776) | Cod sursa (job #2069233) | Cod sursa (job #835218) | Cod sursa (job #3347548)
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
const int mxN = 1e5 + 1;
int tati[mxN], ranc[mxN], n, q;
void init_dsu(){
for(int i = 1; i <= n; i++){
tati[i] = i;
ranc[i] = 1;
}
}
int find(int a){
while(tati[a] != a)
a = tati[a];
return a;
}
void link(int a, int b){
int rA = find(a), rB = find(b);
if(ranc[rA] < ranc[rB])
swap(rA, rB);
if(ranc[rA] == ranc[rB])
ranc[rA]++;
tati[rB] = rA;
}
void query(int a, int b){
if(find(a) == find(b))
fout << "DA\n";
else
fout << "NU\n";
}
int main(){
int a, b, t;
fin >> n >> q;
init_dsu();
for(int i = 1; i <= q; i++){
fin >> t >> a >> b;
if(t == 1)
link(a, b);
else
query(a, b);
}
}