Pagini recente » Cod sursa (job #2830287) | Cod sursa (job #2736626) | Cod sursa (job #1518231) | Cod sursa (job #165446) | Cod sursa (job #2249476)
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <array>
#include <algorithm>
#include <vector>
#include <stack>
#include <set>
#include <assert.h>
#include <queue>
#include <chrono>
#include <memory>
using LL = long long;
using ULL = int long long;
const std::string _problemName = "disjoint";
namespace std {
std::ifstream fin(_problemName + ".in");
std::ofstream fout(_problemName + ".out");
}
#define USE_FILES
#ifdef USE_FILES
#define cin fin
#define cout fout
#endif
std::vector<int> parents;
int find(int a) {
if (a == parents[a]) {
return a;
}
parents[a] = find(parents[a]);
return parents[a];
}
void join(int a, int b) {
a = find(a);
b = find(b);
parents[a] = b;
}
int main() {
int n, m;
std::cin >> n >> m;
parents.resize(n);
for (int idx = 0; idx < n; ++idx) {
parents[idx] = idx;
}
while (m--) {
int op, a, b;
std::cin >> op >> a >> b;
--a, --b;
if (op == 1) {
join(a, b);
}
else {
std::cout << ((find(a) == find(b)) ? "DA" : "NU") << '\n';
}
}
return 0;
}