Pagini recente » Cod sursa (job #3360139) | Cod sursa (job #3360190) | Cod sursa (job #3360241) | Cod sursa (job #3360184) | Cod sursa (job #3360200)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,k,x,y;
struct forest{
vector<int> parent;
forest(int n){
parent.resize(n+1);
}
int rad(int a){
if(parent[a]==0){
return a;
}
parent[a]=rad(parent[a]);
return parent[a];
}
void join(int a,int b){
a=rad(a);
b=rad(b);
if(a!=b)parent[a]=b;
}
bool qu(int a, int b){
return rad(a)==rad(b);
}
};
int main()
{
fin>>n>>m;
forest disjoint(n);
for(int i=1;i<=m;i++){
fin>>k>>x>>y;
if(k==1){
disjoint.join(x,y);
}else if(disjoint.qu(x,y)){
fout<<"DA\n";
}else fout<<"NU\n";
}
return 0;
}