Pagini recente » Clasament Winter Challenge 2008, runda 2 | Cod sursa (job #1479242) | Cod sursa (job #3267836) | Cod sursa (job #1993028) | Cod sursa (job #3289152)
#include <fstream>
#include<algorithm>
using namespace std;
ifstream cin ( "disjoint.in" );
ofstream cout( "disjoint.out" );
const int Nmax = 1e5 + 5;
int parinte[Nmax], sz[Nmax];
int parent( int nod ) {
if( parinte[nod] == nod )
return nod;
parinte[nod] = parent( parinte[nod] );
return parinte[nod];
}
void merge_sets( int u, int v ) {
u = parent( u );
v = parent( v );
if( u == v )
return;
if( sz[u] < sz[v] )
swap( u, v );
parinte[v] = u;
if( sz[u] == sz[v] )
sz[u] ++;
}
int main()
{
int n, queries, x, y, operatie, i;
cin >> n >> queries;
for( i = 1; i < n + 1; i ++ )
parinte[i] = i, sz[i] = 1;
for( i = 0; i < queries; i ++ ) {
cin >> operatie >> x >> y;
if( operatie == 1 )
merge_sets( x, y );
else
if( parent( x ) == parent( y ) )
cout << "DA\n";
else
cout << "NU\n";
}
return 0;
}