# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
128076 |
2019-07-10T11:53:05 Z |
Nordway |
Race (IOI11_race) |
C++17 |
|
0 ms |
0 KB |
#include <bits/stdc++.h>
#define x first
#define y second
#define pb push_back
#define mp make_pair
#define up_b upper_bound
#define low_b lower_bound
#define sz(x) (int)x.size()
#define all(v) v.begin(),v.end()
#define boost ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
typedef pair<ll,ll> pll;
const ll INF=1e18;
const int inf = 2e9;
const ld eps=1e-7;
const ld pi = acos(-1);
const int dx[4]={0,0 ,1,-1};
const int dy[4]={1,-1,0,0};
const int N=2e5+11;
const int M=1e6+11;
const int mod=1e9+7;
int sz[N],h[N],ans[N];
ll d[N];
map<ll,int>mn;
vector<pii>g[N];
void dfssz(int v,int p){
sz[v]=1;
h[v]=h[p]+1;
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to!=p){
d[to]=d[v]+g[v][i].y;
dfssz(to,v);
}
}
}
void add(int v,int p){
mn[d[v]]=min(mn[d[v]],h[v]);
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to==p)continue;
add(to,v);
}
}
void clr(int v,int p){
mn[d[v]]=inf;
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to==p)continue;
clr(to,v);
}
}
void upd(int u,int v){
ll val=k-d[u]+2*d[v];
ans[v]=min(ans[v],mn[val]+h[u]-2*h[v]);
}
void dfs_upd(int v,int p,int u){
upd(v,u);
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to==p)continue;
dfs_upd(to,v,u);
}
}
void dfs(int v,int pr,bool cl){
int p=-1;
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to==pr)continue;
if(p==-1)p=to;
if(sz[p]<sz[to])p=to;
}
ans[v]=inf;
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to==pr||to==p)continue;
dfs(to,v,1);
ans[v]=min(ans[v],ans[to]);
}
if(p!=-1){
dfs(p,v,0);
ans[v]=min(ans[v],ans[p]);
}
for(int i=0;i<sz(g[v]);i++){
int to=g[v][i].x;
if(to==pr||to==p)continue;
dfs_upd(to,v,v);
add(to,v);
}
upd(v,v);
mn[d[v]]=min(mn[d[v]],h[v]);
if(cl){
clr(v,pr);
}
}
int best_path(int n,int k,int H[][],int l[]){
for(int i=0;i<n-1;i++){
int u=H[i][0],v=H[i][1],w=l[i];
g[u].pb(mp(v,w));
g[v].pb(mp(u,w));
}
dfssz(0,0);
for(int i=0;i<n;i++){
mn[d[i]]=inf;
}
dfs(0,0,0);
return mn[0];
}
Compilation message
race.cpp: In function 'void upd(int, int)':
race.cpp:68:10: error: 'k' was not declared in this scope
ll val=k-d[u]+2*d[v];
^
race.cpp: At global scope:
race.cpp:113:35: error: declaration of 'H' as multidimensional array must have bounds for all dimensions except the first
int best_path(int n,int k,int H[][],int l[]){
^
race.cpp:113:36: error: expected ')' before ',' token
int best_path(int n,int k,int H[][],int l[]){
^
race.cpp:113:37: error: expected unqualified-id before 'int'
int best_path(int n,int k,int H[][],int l[]){
^~~