Pagini recente » Cod sursa (job #1968939) | Cod sursa (job #2133017) | Cod sursa (job #151973) | Cod sursa (job #1592177) | Cod sursa (job #412885)
Cod sursa(job #412885)
#include<fstream>
#define max 100001
using namespace std;
int n,m;
int Tata[max];
int Rang[max];
void unin( int x, int y){
if( Rang[x] > Rang[y] ) Tata[y] = x;
else {Tata[x] = y;
if( Rang[x] == Rang[y]) Rang[y] ++;
}
}
int root ( int x){
int r = Tata[x],t;
while( r!=Tata[r] ) r = Tata[r];
for( ; r != x ; ){
t = Tata[x];
Tata[x] = r;
x=t;
}
return r;
}
int main(){
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f>>n>>m;
int i,o,x,y;
for(i=1;i<=n;i++){ Tata[i]=i; Rang[i]=1; }
for( ; m ; --m ){
f>>o>>x>>y;
if ( o==1 ) unin(root(x),root(y));
else if( o== 2){
if( root(x) == root(y) ) g<<"DA\n";
else g<<"NU\n";
}
}
return 0;
}