Pagini recente » Cod sursa (job #395753) | Cod sursa (job #1340537) | Cod sursa (job #2802729) | Cod sursa (job #2907143) | Cod sursa (job #1697609)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100002], h[100002], n, m, x, y, cod;
int padre( int k )
{
if( t[k] == k )
return k;
else
return k = padre(t[k]);
}
void impreunare( int k, int l )
{
int x = padre(k);
int y = padre(l);
if( h[x] < h[y] )
{
t[x] = y;
}
else if( h[x] > h[y] )
{
t[y] = x;
}
else
{
t[x] = y;
h[y]++;
}
}
int main()
{
f >> n >> m;
for( int i=1; i<=n; i++ )
t[i] = i;
for( int i=1; i<=m; i++ )
{
f >> cod >> x >> y;
if( cod == 2 )
{
if( padre(x) == padre(y) )
g << "DA\n";
else
g << "NU\n";
}
else
{
impreunare(x,y);
}
}
return 0;
}