Pagini recente » Cod sursa (job #573522) | Cod sursa (job #1403012) | Cod sursa (job #2627292) | Cod sursa (job #2505567) | Cod sursa (job #3274141)
#include <fstream>
using namespace std;
int rad[100005];
int find(int x){
if( rad[x] < 0 ){
return x;
}
rad[x] = find( rad[x] );
return rad[x];
}
void unite(int x, int y){
if( rad[x] > rad[y] ){
swap( x, y );
}
rad[x] += rad[y];
rad[y] = x;
}
int main(){
int n, m, i, tip, x, y, rad_x, rad_y;
ifstream fin( "disjoint.in" );
ofstream fout( "disjoint.out" );
fin >> n >> m;
for( i = 1; i <= n; i++ ){
rad[i] = -1;
}
for( i = 0; i < m; i++ ){
fin >> tip >> x >> y;
if( tip == 1 ){
rad_x = find( x );
rad_y = find( y );
if( rad_x != rad_y ){
unite( rad_x, rad_y );
}
}
else{
if( find(x) == find(y) ){
fout << "DA\n";
}
else{
fout << "NU\n";
}
}
}
return 0;
}