Submission #128079

# Submission time Handle Problem Language Result Execution time Memory
128079 2019-07-10T11:54:54 Z Nordway Race (IOI11_race) C++17
Compilation error
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 k,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[]){
  k=K;
  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: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[]){
                                     ^~~