Pagini recente » Cod sursa (job #163437) | Cod sursa (job #1293443) | Cod sursa (job #629529) | Cod sursa (job #1871466) | Cod sursa (job #1857351)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int N_MAX = 100005;
vector <int> multimi[N_MAX];
int rang[N_MAX];
void Union(vector<int> &a, vector<int> &b) {
vector <int> *x,*y;
if (a.size() >= b.size()) {
x = &a;
y = &b;
} else {
x = &b;
y = &a;
}
int ind = rang[(*x)[0]];
for (const auto &t : *y) {
(*x).push_back(t);
rang[t] = ind;
}
}
int main()
{
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
multimi[i].emplace_back(i);
rang[i] = i;
}
while (m--) {
int type, x, y;
fin >> type >> x >> y;
if (type == 1) {
Union(multimi[x], multimi[y]);
} else {
fout << ((rang[x] == rang[y]) ? "DA" : "NU") << "\n";
}
}
return 0;
}