Pagini recente » Cod sursa (job #3341141) | Cod sursa (job #2289126) | Cod sursa (job #3344198) | Cod sursa (job #3356966) | Cod sursa (job #3322633)
#include <bits/stdc++.h>
#define ll long
// #define fi cin
// #define fo cout
#define nl '\n'
#define sp ' '
using namespace std;
string FILENAME = "disjoint";
fstream fi(FILENAME + ".in", ios::in);
fstream fo(FILENAME + ".out", ios::out);
void solve();
void reunite(int, int, int);
void sameSet(int, int);
vector<int> sets;
int main() {
solve();
return 0;
}
void solve() {
int n, m;
fi >> n >> m;
sets.resize(n + 1);
for (int i = 0; i < m; ++i) {
int a, b, c;
fi >> a >> b >> c;
if (sets[c] == 0) sets[c] = c;
if (sets[b] == 0) sets[b] = b;
if(a == 1) {
reunite(b, c, n);
}
else {
sameSet(b, c);
}
}
}
void reunite(const int a, const int b, const int n) {
const int sa = sets[a], sb = sets[b];
const int s = sa;
if(sa == sb)
return;
for (int i = 1; i <= n; ++i) {
if(sets[i] == sa || sets[i] == sb)
sets[i] = s;
}
}
void sameSet(const int a, const int b) {
if(sets[a] == sets[b]) fo << "DA";
else fo << "NU";
fo << nl;
}