Pagini recente » Borderou de evaluare (job #3339036) | Borderou de evaluare (job #3324763) | Borderou de evaluare (job #3306854) | Borderou de evaluare (job #3346126) | Cod sursa (job #3311955)
#include <iostream>
using namespace std;
int daddy[100005];
int get_big_daddy( int a ) {
if ( a == daddy[a] ) {
return a;
}
return daddy[a] = get_big_daddy( daddy[a] );
}
void join( int a, int b ) {
a = get_big_daddy( a );
b = get_big_daddy( b );
if ( a != b ) {
daddy[b] = daddy[a];
}
}
int main() {
ifstream cin( "disjoint.in" );
ofstream cout( "disjoint.out" );
int n, m;
cin >> n >> m;
for ( int i = 1; i <= n; i++ ) {
daddy[i] = i;
}
for ( int i = 0; i < m; i++ ) {
int op, x, y;
cin >> op >> x >> y;
if ( op == 1 ) {
join( x, y );
}
else {
if ( get_big_daddy( x ) == get_big_daddy( y ) ) {
cout << "DA";
}
else {
cout << "NU";
}
}
}
return 0;
}