제출 #1213970

#제출 시각아이디문제언어결과실행 시간메모리
1213970tuankhang13경주 (Race) (IOI11_race)C++20
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> #define int long long #define fi first #define se second #define pb push_back #define pii pair<int,int> using namespace std; const int maxn=2e5+13; int n,k,res; vector<pii> adj[maxn]; vector<int> del(maxn,0),child(maxn); set<int> s; map<int,int> mp; void dfs(int u,int p){ child[u]=1; for(auto x:adj[u]){ int v=x.fi; if(v!=p&&!del[v]){ dfs(v,u); child[u]+=child[v]; } } } int find_ctroid(int u,int p,int sz){ for(auto x:adj[u]){ int v=x.fi; if(v!=p&&!del[v]&&child[v]>sz/2){ return find_ctroid(v,u,sz); } } return u; } void collect(int u,int p,int depth,int dist, bool fil){ if(dist>k)return; if(fil){ if(mp.find(dist)!=mp.end()){ mp[dist]=min(mp[dist],depth); } else{ mp[dist]=depth; } s.insert(dist); } else { if(mp.find(k-dist)!=mp.end()){ res=min(res,depth+mp[k-dist]); } } for(auto x:adj[u]){ int v=x.fi; if(v!=p&&!del[v]){ collect(v,u,depth+1,dist+x.se,fil); } } } void decompose(int u){ dfs(u,0); int ct=find_ctroid(u,0,child[u]); del[ct]=1; s.insert(0); for(auto x:adj[ct]){ int v=x.fi; if(!del[v]){ collect(v,ct,1,x.se,0); collect(v,ct,1,x.se,1); } } for(int x:s)mp[x]=0; s.clear(); for(auto x:adj[u]){ int v=x.fi; if(!del[v]){ decompose(v); } } } int best_path(int N,int K,int H[][2],int L[]){ n=N; k=K; for(int i=0;i<n-1;++i){ int u=H[i][0],v=H[i][1],w=L[i]; ++u,++v; adj[u].pb({v,w}); adj[v].pb({u,w}); } res=INT_MAX; decompose(1); return (res==INT_MAX?-1:res); }

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

/usr/bin/ld: /tmp/ccqlZOFT.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status