Pagini recente » Cod sursa (job #1619052) | Cod sursa (job #2312069) | Cod sursa (job #1326392) | Cod sursa (job #1835802) | Cod sursa (job #2942852)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fcin("disjoint.in");
ofstream fcout("disjoint.out");
int n, m;
vector<int> tati;
int caut_radacina(int src)
{
if(src!=tati[src])
return caut_radacina(tati[src]);
return src;
}
int main()
{
fcin>>n>>m;
tati.push_back(0);
for(int i = 1; i<=n; i++)
tati.push_back(i);
int x, y, cod;
for(int i=1; i<=m; i++)
{
fcin>>cod>>x>>y;
switch (cod)
{
case 1:
// facem reuniunea a radacinei elementului x cu radacina elementului y
tati[caut_radacina(x)] = caut_radacina(y);
break;
case 2:
// parcurgem arborele in sus si daca ajungem la aceeasi radacina
// atunci elementele noastre sunt in aceeasi multime
if(caut_radacina(x) == caut_radacina(y))
fcout<<"DA\n";
else fcout << "NU\n";
break;
}
}
fcin.close();
fcout.close();
return 0;
}