Pagini recente » Cod sursa (job #3360917) | Monitorul de evaluare | Cod sursa (job #3360927) | Cod sursa (job #3360920) | Cod sursa (job #3360912)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
struct padure {
vector<int> X;
padure(int n) {
X.resize(n+1);
}
int rad(int x) {
if (X[x]==0) return x;
X[x]=rad(X[x]);
return X[x];
}
void join(int x, int y) {
x=rad(x);
y=rad(y);
if (x!=y) X[x]=y;
}
bool query(int x, int y) {
return rad(x)==rad(y);
}
};
int main() {
int n, m;
cin>>n>>m;
padure disjoint(n);
for (int i=1; i<=m; i++) {
int op, x, y;
cin>>op>>x>>y;
if (op==1) {
disjoint.join(x, y);
}
else if (op==2) {
if (disjoint.query(x, y)==1) cout<<"DA\n";
else cout<<"NU\n";
}
}
}