Pagini recente » Cod sursa (job #327791) | Cod sursa (job #583116) | Cod sursa (job #1324081) | Cod sursa (job #2636952) | Cod sursa (job #803138)
Cod sursa(job #803138)
#include<fstream>
#define dim 100006
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int T[dim],i,j,x,y,a,b;
int tata(int x){
int y=x;
while(T[y]>=0)
y=T[y];
return y;
}
void unire(int a,int b){
if(-T[a]>=T[b]){
T[a]=T[a]+T[b];
T[b]=a;
}
else{
T[b]=T[b]+T[a];
T[a]=b;
}
}
int main () {
f>>n>>m;
for(i=1;i<=n;++i)
T[i]=-1;
for(i=1;i<=m;++i){
f>>op>>x>>y;
a=tata(x);b=tata(y);
if(op==1){
unire(a,b);
}
else{
if(a!=b)
g<<"NU\n";
else
g<<"DA\n";
}
}
return 0;
}