# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
76581 | Xylofo | Werewolf (IOI18_werewolf) | C++14 | 1886 ms | 235564 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 "werewolf.h"
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i = a; i < b; ++i)
using vi = vector<int>;
using graph = vector<vi>;
const int LG = 28;
struct Tree {
graph t;
vi p;
vector<vi> fastUp;
int fd(int a) { return p[a] == a ? a : p[a] = fd(p[a]); }
int n;
vi start, end, fromP;
int root;
Tree(int rev, const graph &g) {
n = g.size();
t.resize(n);
fastUp.assign(n, vi(LG,-1));
p.resize(n);
fromP = start = end = p;
rep(i,0,n) p[i] = i;
for(int i = rev*(n-1); i >= 0 && i < n; i += 1 - 2*rev) {
for(int j:g[i]) if(rev ^ (j < i)) {
int jj = fd(j);
if(jj != i) {
p[jj] = i;
t[i].push_back(jj);
Compilation message (stderr)
# | 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... |