Pagini recente » Cod sursa (job #2600328) | Cod sursa (job #858174) | Cod sursa (job #1619409) | Cod sursa (job #3220850) | Cod sursa (job #739134)
Cod sursa(job #739134)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int N=110000;
int n,m;
int v[N];
int getroot(int x){
int radx,ant,cx;
while(v[x]!=x){
x=v[x];
}
radx=x;
ant=cx;
x=cx;
while(v[x]!=x){
x=v[x];
v[ant]=radx;
ant=x;
}
return radx;
}
void query(int x,int y){
if(getroot(x)==getroot(y)){
out<<"DA\n";
return;
}
out<<"NU\n";
}
void join(int x,int y){
v[getroot(x)]=getroot(y);
}
int main(){
in>>n>>m;
for(int i=1;i<=n;++i){v[i]=i;}
while(m--){
int x,y;
in>>x;
if(x==1){
in>>x>>y;join(x,y);
continue;
}
in>>x>>y;query(x,y);
}
return 0;
}