Pagini recente » Cod sursa (job #1114658) | Cod sursa (job #1860752) | Cod sursa (job #1728935) | Cod sursa (job #2079961) | Cod sursa (job #2954211)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector <int> vec(100001);
// cautam radacina arborelui
int rad(int node)
{
if (vec[node] == node) // radacina arborelui
return node;
return rad(vec[node]);
}
int main()
{
int n, m, i, cod, x, y;
fin >> n >> m;
vec.resize(n + 1);
for (i = 1; i <= n; i++)
vec[i] = i;
for (i = 1; i <= m; i++)
{
fin >> cod >> x >> y;
if (cod == 1) // facem reuniunea dintre cei doi arbori
vec[rad(y)] = rad(x);
if (cod == 2) // verificare elemente din aceeasi multime (daca au aceeasi radacina, sunt in acelasi arbore)
{
if (rad(x) == rad(y))
fout << "DA\n";
else
fout << "NU\n";
}
}
fin.close();
fout.close();
return 0;
}