Pagini recente » Cod sursa (job #326788) | Cod sursa (job #1707805) | Cod sursa (job #401198) | Cod sursa (job #2581951) | Cod sursa (job #2550826)
#include<fstream>
#define maxn 200005
using namespace std;
int a[maxn],r[maxn],m,n,x,y,op;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
void unite(int x, int y){
if(r[x]>r[y])
a[y]=x;
else
a[x]=y;
if(r[x]==r[y])
r[y]++;
}
int find(int x){
int r,aux;
for(r=x; r!=a[r]; r=a[r]);
for(; x!=a[x];){
aux=a[x];
a[x]=r;
x=aux;
}
return r;
}
int main(){
cin>>n>>m;
for(int i=1; i<=n; i++)
a[i]=i, r[i]=1;
while(m--){
cin>>op>>x>>y;
if(op==1){
if(find(x)!=find(y))
unite(find(x),find(y));
}else{
if(find(x)==find(y))
cout<<"DA\n";
else cout<<"NU\n";
}
}
}