Pagini recente » Cod sursa (job #2561098) | Cod sursa (job #2007310) | Borderou de evaluare (job #155280) | Cod sursa (job #127824) | Cod sursa (job #2417080)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int MAXN = 100005;
int n, m;
int v[MAXN];
int p[MAXN];
int parent(int k) {
int t = p[k];
while (t != p[t]) {
t = p[t];
}
while (p[k] != t) {
int r = k;
k = p[k];
p[r] = t;
}
return t;
}
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
p[i] = i;
v[i] = 1;
}
for (int i = 1; i <= m; ++i) {
int a, b, c;
fin >> a >> b >> c;
if (a == 1) {
if (v[b] > v[c]) {
p[b] = parent(c);
v[c]++;
}
else {
p[c] = parent(b);
v[b]++;
}
}
else {
if (parent(b) == parent(c)) {
fout << "DA";
}
else {
fout << "NU";
}
fout << '\n';
}
}
fout.close();
return 0;
}