Pagini recente » Cod sursa (job #2368997) | Cod sursa (job #522829) | Cod sursa (job #825745) | Cod sursa (job #606070) | Cod sursa (job #3322635)
#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);
int getSet(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 = getSet(a), sb = getSet(b);
const int s = sa;
if(sa == sb)
return;
sets[sets[b]] = sa;
}
void sameSet(const int a, const int b) {
if(getSet(a) == getSet(b)) fo << "DA";
else fo << "NU";
fo << nl;
}
int getSet(const int a) {
if(sets[a] == a)
return a;
else
return sets[a] = getSet(sets[a]);
}