Pagini recente » Cod sursa (job #691828) | Clasament ursus_polar_de_munte | Cod sursa (job #987047) | Cod sursa (job #1570997) | Cod sursa (job #2423714)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int main()
{
int n, m;
f >> n >> m;
vector < int > comp(n + 1);
vector < vector <int> > L(n + 1);
for (int i = 1; i <= n; i++) {
comp[i] = i;
L[i].push_back(i);
}
for (int i = 1; i <= m; i++) {
int cod, x, y;
f >> cod >> x >> y;
if (cod == 1) {
if (L[comp[x]].size() < L[comp[y]].size()) {
auto cx = L[comp[x]].begin(), cy = L[comp[x]].end();
for (auto i = cx; i != cy; i++) {
comp[(*i)] = comp[y];
L[comp[y]].push_back((*i));
}
//L[comp[x]].clear();
}
else {
auto cx = L[comp[y]].begin(), cy = L[comp[y]].end();
for (auto i = cx; i != cy; i++) {
comp[(*i)] = comp[x];
L[comp[x]].push_back((*i));
}
//L[comp[y]].clear();
}
}
else {
if (comp[x] == comp[y]) g << "DA\n";
else g << "NU\n";
}
}
}