Pagini recente » Cod sursa (job #1749423) | Cod sursa (job #2612616) | Cod sursa (job #3169773) | Cod sursa (job #26519) | Cod sursa (job #2772210)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
#define MAXN 100001
vector <int> g[MAXN];
int daddy[MAXN];
int myfind(int x){
vector <int> v;
while(daddy[x]!=x){
v.push_back(x);
x=daddy[x];
}
for(int i=0; i<v.size(); i++)
daddy[v[i]]=x;
return x;
}
void myunion(int x, int y){
daddy[myfind(y)]=myfind(x);
}
int main()
{
int n,m,c,a,b;
cin>>n>>m;
for(int i=1;i<=n;i++)
daddy[i]=i;
for(int i=1; i<=m; i++){
cin>>c>>a>>b;
if(c==1){
myunion(a, b);
}
if(c==2){
if(myfind(a)==myfind(b))
cout<<"DA"<<endl;
else
cout<<"NU"<<endl;
// cout<<daddy[a]<<" "<<daddy[b];
}
}
return 0;
}