Pagini recente » Cod sursa (job #344787) | Cod sursa (job #25338) | Cod sursa (job #2659324) | Cod sursa (job #2248015) | Cod sursa (job #631704)
Cod sursa(job #631704)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int N=100001;
struct punct{
int tata,h;
}v[N];
int n,m;
inline int root(int x){
int rad,clonex,inaltime=0;
clonex=x;
while(v[x].tata!=x){
x=v[x].tata;
inaltime++;
}
rad=x;
x=clonex;
v[x].h=inaltime;
while(v[x].tata!=x){
v[x].tata=rad;
v[x].h=inaltime;
x=v[x].tata;
}
return rad;
}
void citire(){
int i,op,x,y,radx,rady;
in>>n>>m;
for(i=1;i<=n;++i){
v[i].tata=i;
}
for(i=1;i<=m;++i){
in>>op>>x>>y;
radx=root(x);
rady=root(y);
if(op==1){
if(v[radx].h<v[rady].h){
v[radx].tata=rady;
}
else{
v[rady].tata=radx;
}
}
else{
if(radx==rady)
out<<"DA\n";
else
out<<"NU\n";
}
}
}
int main(){
citire();
return 0;
}