# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
425748 | KoD | Werewolf (IOI18_werewolf) | C++17 | 926 ms | 93004 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "werewolf.h"
template <class T> using Vec = std::vector<T>;
struct UnionFind {
Vec<int> par;
Vec<Vec<int>> children;
UnionFind(const int n) : par(n), children(n) {
std::iota(par.begin(), par.end(), 0);
}
int find(const int u) {
return par[u] == u ? u : par[u] = find(par[u]);
}
void absorb(int u, int v) {
u = find(u);
v = find(v);
if (u == v) {
return;
}
par[v] = u;
children[u].push_back(v);
}
std::pair<Vec<int>, Vec<std::pair<int, int>>> build(const int root) {
const int n = (int) par.size();
Vec<int> ord;
ord.reserve(n);
Vec<std::pair<int, int>> range(n);
int timer = 0;
auto dfs = [&](auto&& dfs, const int u) -> void {
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |