| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|
| 492950 | | 1ne | Race (IOI11_race) | C++14 | | 92 ms | 119516 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 "race.h"
#include<bits/stdc++.h>
using namespace std;
vector<set<pair<int,int>>>adj(1e6);
int k=0;
vector<int>sub(1e6,0);
vector<int>ans(1e6,0);
vector<int>aux(1e6,0);
int answer = INT_MAX;
int kk = -1;
int bookmark = 0;
void dfs (int cur,int par,int cost,int len,int fill){
if (fill){
if (aux[cost]<bookmark){
aux[cost] = bookmark;
ans[cost] = len;
}
else if (len<ans[cost]){
ans[cost] = len;
aux[cost] = bookmark;
}
}
else{
if (aux[kk - cost]==bookmark){
if (len + ans[kk - cost]<answer){
answer = min(answer,len + ans[kk-cost]);
}
if (cost ==kk){
answer = min(answer,len);
}
}
}
for (auto x:adj[cur]){
if (x.first!=par){
dfs(x.first,cur,cost + x.second,len + 1,fill);
}
}
}
void getsub(int u,int par){
sub[u]=1;
k++;
for (auto x:adj[u]){
if (x.first!=par){
getsub(x.first,u);
sub[u]+=sub[x.first];
}
}
}
int getcentroid(int u,int par){
for (auto x:adj[u]){
if (x.first!=par){
if (sub[x.first]>k/2){
return getcentroid(x.first,u);
}
}
}
return u;
}
void decomposition(int u,int par){
k = 0;
getsub(u,u);
int c = getcentroid(u,u);
if (par==-1){
par=c;
}
bookmark++;
for (auto x:adj[c]){
dfs(x.first,c,x.second,1,0);
dfs(x.first,c,x.second,1,1);
}
for (auto x:adj[c]){
adj[x.first].erase({c,x.second});
//adj[c].erase(x);
decomposition(x.first,c);
}
}
void build(){
decomposition(0,-1);
}
int best_path(int N, int K, int H[][2], int L[])
{
kk = K;
for (int i = 0;i<N-1;++i){
adj[H[i][0]].insert({H[i][1],L[i]});
adj[H[i][1]].insert({H[i][0],L[i]});
}
build();
if (answer==INT_MAX){
return -1;
}
return answer;
}
| # | 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... |