# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1136116 | lopkus | Two Currencies (JOI23_currencies) | C++20 | 1227 ms | 28360 KiB |
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
vector<int>a[100010];
int pr[20][100010];
int h[100010];
int cr=0;
int nums[100010],tail[100010];
void pre(int i,int c){
cr++;
nums[i]=cr;
h[i]=h[c]+1;
pr[0][i]=c;
for(int o=1;o<17;o++){
pr[o][i]=pr[o-1][pr[o-1][i]];
}
for(auto o:a[i]){
if(o!=c)pre(o,i);
}
tail[i]=cr;
}
int lca(int i,int j){
if(h[i]>h[j])swap(i,j);
for(int o=16;o>=0;o--){
if(h[i]+(1<<o)<=h[j])j=pr[o][j];
}
if(i==j)return i;
for(int o=16;o>=0;o--){
if(pr[o][i]!=pr[o][j]){
i=pr[o][i];
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... |