Pagini recente » Cod sursa (job #992494) | Cod sursa (job #3175403) | Cod sursa (job #2189672) | Cod sursa (job #638787) | Cod sursa (job #1986702)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#define ll long long
#define pb push_back
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NLIM = 1e5 + 10;
int N, M;
int parent[NLIM];
int rang[NLIM];
int findParent( int x )
{
if( parent[x] == x )
return x;
parent[x] = findParent( parent[x] );
return parent[x];
}
int join( int x, int y )
{
int px = findParent( x );
int py = findParent( y );
// big -> small
if( rang[px] > rang[py] )
{
parent[px] = py;
rang[py] += rang[px];
}
else
{
parent[py] = px;
rang[px] += rang[py];
}
}
int main()
{
fin >> N >> M;
for( int i = 1; i <= N; ++i )
{
parent[i] = i;
rang[i] = 1;
}
while( M-- )
{
int t, x, y;
fin >> t >> x >> y;
if( t == 1 )
{
join( x, y );
}
else
{
//cout << findParent( x ) << " " << findParent( y ) << "\n";
if( findParent( x ) == findParent( y ) )
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}