제출 #873961

#제출 시각아이디문제언어결과실행 시간메모리
873961CYhuang경주 (Race) (IOI11_race)C++17
컴파일 에러
0 ms0 KiB
#include "race.h" #include<bits/stdc++.h> using namespace std; #define For(i,a,b) for(int i=a;i<=b;i++) typedef pair<int,int> pii; typedef vector<int> vi; #define pb push_back const int Size=2e5; const int Maxn=1e6; const int INF=1<<20; int ans; int dp[Maxn+20],sz[Size+20],cnt[Maxn+20]; vector<pii> adj[Size+20]; bitset<Size+20> vis; void dfs_sz(int u,int pa){ sz[u]=1; for(auto [v,w]:adj[u]){ if(v==pa||vis[v]) continue; dfs_sz(v,u); sz[u]+=sz[v]; } } int dfs_cen(int u,int pa,int tot_sz){ for(auto [v,w]:adj[u]){ if(v==pa||vis[v]) continue; if(sz[v]>(tot_sz>>1)) return dfs_cen(v,u,tot_sz); } return u; } void get_path(int u,int pa,int len,int dep,vi &vec,int K){ if(len>K) return ; cnt[len]=min(cnt[len],dep); ans=min(ans,dp[K-len]+cnt[len]); vec.pb(len); for(auto [v,w]:adj[u]){ if(v==pa||vis[v]) continue; get_path(v,u,len+w,dep+1,vec); } } void c_d(int rt,int K){ dfs_sz(rt,rt); int centroid=dfs_cen(rt,rt,sz[rt]); vis[centroid]=true; vi vec; for(auto [v,w]:adj[centroid]){ if(vis[v]) continue; vi vec2; get_path(v,centroid,w,1,vec2,K); for(auto i:vec2){ dp[i]=min(dp[i],cnt[i]); vec.pb(i); } for(auto i:vec2) cnt[i]=INF; } for(auto i:vec) dp[i]=INF; for(auto [v,w]:adj[centroid]){ if(vis[v]) continue; c_d(v,K); } } int best_path(int N, int K, int H[][2], int L[]) { For(i,0,N-2){ int u=H[i][0],v=H[i][1],w=L[i]; u++,v++; adj[u].pb({v,w}); adj[v].pb({u,w}); } ans=INF; For(i,1,K) dp[i]=cnt[i]=INF; c_d(1,K); return (ans==INF?-1:ans); }

컴파일 시 표준 에러 (stderr) 메시지

race.cpp: In function 'void get_path(int, int, int, int, vi&, int)':
race.cpp:40:37: error: too few arguments to function 'void get_path(int, int, int, int, vi&, int)'
   40 |         get_path(v,u,len+w,dep+1,vec);
      |                                     ^
race.cpp:33:6: note: declared here
   33 | void get_path(int u,int pa,int len,int dep,vi &vec,int K){
      |      ^~~~~~~~