Pagini recente » Cod sursa (job #718392) | Cod sursa (job #3039323) | Cod sursa (job #361681) | Cod sursa (job #944571) | Cod sursa (job #2643762)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
map <int, int> M;
int t[200001];
int T, n, x, y, op, k;
int Find(int x){
int z, y;
y = x;
while(t[x]) {x = t[x];}
while(t[y]){
z = t[y];
t[y] = x;
y = z;
}
return x;
}
void Union(int x, int y){
t[y] = x;
}
int main(){
f >> n >> T;
n = 0;
while(T--){
f >> op >> x >> y;
k = 0;
auto it = M.find(x);
if(it == M.end()) {k = 1;n++;M[x] = n;}
it = M.find(y);
if(it == M.end()) {k = 1;n++;M[y] = n;}
x = M[x], y = M[y];
x = Find(x), y = Find(y);
if(op == 1){
if(x != y) Union(x, y);
}
else{
if(k == 1) g << "NU\n";
else if(x == y) g << "DA\n";
else g << "NU\n";
}
}
}