# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
826870 | khshg | Two Currencies (JOI23_currencies) | C++14 | 3 ms | 980 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 int long long
const int LG = 24;
int N, M, Q;
vector<pair<int, int>> e;
vector<vector<pair<int, int>>> adj;
vector<array<int, LG>> par;
vector<int> lvl;
vector<vector<int>> pp;
void dfs(int s) {
for(auto& v : adj[s]) {
int u = v.first;
if(u == par[s][0]) continue;
lvl[u] = lvl[s] + 1;
par[u][0] = s;
for(int i = 1; i < LG; ++i) {
par[u][i] = par[par[u][i - 1]][i - 1];
}
dfs(u);
}
}
int lca(int s, int t) {
if(lvl[t] > lvl[s]) swap(s, t);
for(int i = LG - 1; i >= 0; --i) {
if(lvl[par[s][i]] <= lvl[t]) {
s = par[s][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... |