# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
850874 | annabeth9680 | Roadside Advertisements (NOI17_roadsideadverts) | C++17 | 32 ms | 10584 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>
#define f first
#define s second
using namespace std;
const int MAXN = 5e4+11;
vector<pair<int,int>> adj[MAXN];
int tin[MAXN], tout[MAXN], par[MAXN][20], dep[MAXN], dist[MAXN];
int timer;
void dfs(int u, int p){
tin[u] = ++timer;
for(auto c : adj[u]){
if(c.f != p){
dep[c.f] = dep[u]+1; par[c.f][0] = u; dist[c.f] = dist[u]+c.s;
dfs(c.f,u);
}
}
tout[u] = timer;
}
int calcanc(int u, int k){
for(int i = 19;i>=0;--i){
if(k >= (1<<i)){
u = par[u][i];
k -= (1<<i);
}
}
return u;
}
int lca(int u, int v){
if(dep[u] < dep[v]) swap(u,v);
u = calcanc(u,dep[u]-dep[v]);
# | 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... |