Pagini recente » Cod sursa (job #1496379) | Cod sursa (job #1415241) | Utilizatori inregistrati la Fmi No Stress 9 | Cod sursa (job #458747) | Cod sursa (job #2517886)
#include <fstream>
using namespace std;
int Rang[100001], T[100001]; ///vector tata
int Radacina_multime(int x)
{
if(x != T[x])
{
int rx = Radacina_multime(T[x]);
T[x] = rx;
return T[x];
}
}
void Unire(int x, int y)
{
int rx = Radacina_multime(x), ry = Radacina_multime(y);
if(rx != ry)
{
if(Rang[rx] > Rang[ry])
T[ry] = rx;
else
{
T[rx] = ry;
if(Rang[rx] == Rang[ry])
Rang[ry] ++;
}
}
}
int main()
{
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, x, y, k, o, i;
f >> n >> k;
///initial fiecare nod pointeaza catre el insusi iar rangul fiecarui arbore este 1
for(i = 1; i <= n; ++ i)
{
T[i] = i;
Rang[i] = 1;
}
for(i = 1; i <= k; ++ i)
{
f >> o >> x >> y;
if(o == 1)
Unire(x, y);
else
{
if(Radacina_multime(x) == Radacina_multime(y))
g << "DA" << '\n';
else
g << "NU" << "\n";
}
}
return 0;
}