Pagini recente » Cod sursa (job #1388377) | Cod sursa (job #2049953) | Cod sursa (job #2044227) | Cod sursa (job #1112546) | Cod sursa (job #2281348)
#include<fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,m,cod,x,y,T[100005],R[100005];
int find(int x){
int t,y;
for(t=x;T[t]!=t;t=T[t]);
while(T[x]!=x){
y=T[x];
T[x]=t;
x=y;
}
return t;
}
void unite(int x,int y){
if(R[x]<=R[y])
T[x]=y;
else T[y]=x;
if(R[x]==R[y]) ++R[y];
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
T[i]=i;
R[i]=1;
}
while(m--){
cin>>cod>>x>>y;
if(cod==1){
unite(find(x),find(y));
}
else{
if(find(x)==find(y)) cout<<"DA\n";
else cout<<"NU\n";
}
}
}