Pagini recente » Cod sursa (job #1268253) | Cod sursa (job #1172788) | Cod sursa (job #2207113) | Cod sursa (job #2746198) | Cod sursa (job #2869682)
#include <array>
#include <cstdint>
#include <fstream>
using u32 = uint32_t;
constexpr size_t MAX_VALUES = 100000;
std::array<size_t, MAX_VALUES> jumpback;
size_t root (size_t index) {
if (index != jumpback[index])
jumpback[index] = root(jumpback[index]);
return jumpback[index];
}
void combine (size_t a, size_t b) {
jumpback[root(a)] = root(b);
}
int main () {
std::ifstream in("disjoint.in");
std::ofstream out("disjoint.out");
size_t valueCount;
u32 queryCount;
in >> valueCount >> queryCount;
for (size_t i = 0; i != valueCount; ++ i)
jumpback[i] = i;
for (u32 i = 0; i != queryCount; ++ i) {
u32 type;
size_t a, b;
in >> type >> a >> b;
-- a, -- b;
if (type == 1) {
combine(a, b);
} else if (type == 2) {
if (root(a) == root(b))
out << "DA\n";
else
out << "NU\n";
}
}
}