Pagini recente » Autentificare | Cod sursa (job #1916476) | Cod sursa (job #820584) | Diferente pentru problema/wbtree intre reviziile 3 si 2 | Cod sursa (job #3360156)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
struct padure {
vector <int> padre;
padure(int n) {
padre.resize(n+1);
}
int rad(int x) {
if (padre[x]==0) {
return x;
}
padre[x]=rad(padre[x]);
return padre[x];
}
bool query(int x,int y) {
if (rad(x)==rad(y)) {
return true;
}else {
return false;
}
}
void join(int x,int y) {
x=rad(x);
y=rad(y);
if (x != y) {
padre[x]=y;
}
}
};
int main() {
int n,m;
fin>>n>>m;
padure disjoint(n);
for (int i=1;i<=m;i++) {
int cer;
fin>>cer;
if (cer==1) {
int x,y;
fin>>x>>y;
disjoint.join(x,y);
}else {
int x,y;
fin>>x>>y;
if (disjoint.query(x,y)) {
fout<<"DA"<<"\n";
}else {
fout<<"NU"<<"\n";
}
}
}
return 0;
}