Pagini recente » Cod sursa (job #234403) | Cod sursa (job #38788) | Cod sursa (job #1862696) | Cod sursa (job #861286) | Cod sursa (job #2041823)
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX=100005;
int tree[NMAX],height[NMAX],n,m;
void read_data(){
int i;
fin>>n>>m;
for(i=1;i<=n;++i){
tree[i]=i;
height[i]=1;
}
}
int same_tree(int x){
int root,aux;
for(root=x;tree[root]!=root;root=tree[root]);
while(tree[x]!=x){
aux=tree[x];
tree[x]=root;
x=tree[x];
}
return root;
}
void unite(int x,int y){
if(height[x]>height[y])
tree[y]=x;
else
tree[x]=y;
if(height[x]==height[y])
++height[y];
}
void solve(){
int code,x,y;
while(m--){
fin>>code>>x>>y;
int x_find=same_tree(x);
int y_find=same_tree(y);
if(code==1){
if(x_find!=y_find)
unite(x_find,y_find);
}
else{
if(x_find==y_find)
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
}
}
int main(){
read_data();
solve();
}