Pagini recente » Cod sursa (job #1513430) | Cod sursa (job #624062) | Cod sursa (job #2892264) | Cod sursa (job #1386992) | Cod sursa (job #636257)
Cod sursa(job #636257)
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,x,y,op,r[100001],t;
inline void upgrade(int x,int y){
register int rx=x,ry=y;
while(r[rx]>0)
rx=r[rx];
while(r[ry]>0)
ry=r[ry];
if(r[rx]<r[ry]){
r[rx]+=r[ry];
r[ry]=rx;
}
else{
r[ry]+=r[rx];
r[rx]=ry;
}
}
inline bool querry(int x,int y){
register int rx=x,ry=y;
while(r[rx]>0)
rx=r[rx];
while(r[ry]>0)
ry=r[ry];
return (rx==ry);
}
int main(void){
register int i,j;
f>>n>>op;
memset(r,-1,n+2);
for(;op>0;op--){
f>>t>>x>>y;
if(t==1){
upgrade(x,y);
continue;
}
if(querry(x,y)){
g<<"DA"<<"\n";
continue;
}
g<<"NU"<<"\n";
}
return 0;
}