# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
776438 | Hacv16 | Election Campaign (JOI15_election_campaign) | C++17 | 153 ms | 109140 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>
using namespace std;
const int LOG = 21;
const int MAX = 2e6 + 15;
int n, m, dp[MAX][LOG], dp2[MAX], depth[MAX], tin[MAX], a[MAX], timer;
vector<int> adj[MAX];
vector<tuple<int, int, int>> queries[MAX];
void dfsInit(int u, int p){
tin[u] = ++timer;
dp[u][0] = p; depth[u] = depth[p] + 1;
for(int i = 1; i < LOG; i++)
dp[u][i] = dp[ dp[u][i - 1] ][i - 1];
for(auto v : adj[u]){
if(v == p) continue;
dfsInit(v, u);
}
}
int lca(int u, int v){
if(depth[u] < depth[v]) swap(u, v);
int k = depth[u] - depth[v];
for(int i = LOG - 1; i >= 0; i--)
if(k & (1 << i)) u = dp[u][i];
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |