# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
795176 | RushB | LOSTIKS (INOI20_lostiks) | C++17 | 1855 ms | 590044 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;
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
const int64_t INF = 1 << 30;
const int N = 1e6 + 5;
const int NWN = 63;
const int M = 20;
int dist[1 << M][NWN], pr[N][M], msk[N][M], h[N], s, t, U[NWN], V[NWN], label[N], W[NWN][NWN], MSK[NWN][NWN], n;
bool yes[N], seen[NWN];
vector<array<int, 2>> adj[N];
vector<int> key[N];
void dfs(int v, int p) {
pr[v][0] = p;
FOR(i, 1, M) {
pr[v][i] = pr[pr[v][i - 1]][i - 1];
msk[v][i] = msk[pr[v][i - 1]][i - 1] | msk[v][i - 1];
}
for (auto P: adj[v]) {
int u = P[0], w = P[1];
if (u == p) continue;
h[u] = h[v] + 1;
msk[u][0] = w;
dfs(u, v);
}
}
array<int, 2> LCA(int u, int v) {
int mask = 0;
if (h[u] > h[v]) swap(u, v);
for (; h[u] != h[v]; v = pr[v][__lg(h[v] - h[u])])
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... |