Pagini recente » Cod sursa (job #1712793) | Cod sursa (job #581096) | Cod sursa (job #612182) | Cod sursa (job #853086) | Cod sursa (job #825789)
Cod sursa(job #825789)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int t[100001], rang[100001], n, m, x, y, op;
int GetRoot(int x) // Caut radacina arborelui
{
if ( x != t[x] )
return t[x] = GetRoot(t[x]);
return x;
}
void Unite(int x,int y) // Unesc multimile, x si y sunt radacinile
{
if ( rang[x]>rang[y] )
t[y] = x;
else
{
t[x] = y;
if ( rang[x] == rang[y] )
rang[y]++;
}
}
int main()
{
fin >> n >> m;
for( int i = 1; i<= n; i++ )
t[i] = i;
for ( int i = 1; i <= m; i++ )
{
fin >> op>> x >> y;
int rx = GetRoot(x);
int ry = GetRoot(y);
if ( op == 1 )
Unite( rx,ry );
else
{
if ( rx==ry )
fout << "DA\n";
else
fout << "NU\n";
}
}
fin.close();
fout.close();
return 0;
}