Pagini recente » Cod sursa (job #1029275) | Cod sursa (job #1720739) | Cod sursa (job #83951) | Cod sursa (job #2716339) | Cod sursa (job #2948667)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m;
int x, y, op;
vector < int > tata; // vector de tati
int getRoot(int &a) { // functie recursiva pentru a afla radacina unui nod
if (tata[a] == a) {
return a;
}
return getRoot(tata[a]);
}
int main() {
f >> n >> m; // citire date
tata.resize(n + 1);
for (int i = 1; i <= n; i++)
tata[i] = i; // deoarece toate nodurile formeaza singure o comp conexa, initializam vectorul de tati cu tata[i] = i
for (int i = 0; i < m; i++)
{
f >> op >> x >> y; // citire date
if (op == 1) {
tata[getRoot(y)] = getRoot(x);
} else {
if (getRoot(x) == getRoot(y)) {
g << "DA" << '\n';
} else {
g << "NU" << '\n';
}
}
}
}