Submission #786041

#TimeUsernameProblemLanguageResultExecution timeMemory
786041vjudge1경주 (Race) (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include "bits/stdc++.h" #include "race.h" using namespace std; #define int long long #define ii pair<int,int> const int ms = 1e6 + 5; int sz[ms], dis[ms]; int n, sum, ans, k; vector<ii> g[ms]; void put(int u, int p, int d, int qtd=0){ if(d > k) return; dis[d] = min(dis[d], qtd); for(auto [v, w] : g[u]){ if(v == p) continue; put(v, u, d+w, qtd+1); } } void qry(int u, int p, int d, int qtd=0){ if(d > k) return; ans = min(ans, dis[d] + dis[k-d]); for(auto [v, w] : g[u]){ if(v == p) continue; qry(v, u, d+w, qtd+1); } } void clean(int u, int p, int d){ if(d > k) return; dis[d] = n + 100; for(auto [v, w] :g[u]){ if(v == p) continue; clean(v, u, d +w); } } void dfs(int u, int p = -1, bool keep = false){ int big = -1; for(auto [v, w] : g[u]){ if(v == p) continue; if(big == -1 || sz[big] < sz[v]){ big = v; } } for(auto [v, w] : g[u]){ if(v == p || v == big) continue; dfs(v, u, false); } if(big != -1) dfs(big, u, true); for(auto [v, w] : g[u]){ if(v == big || v == p) continue; qry(v, u, w, 1); put(v, u, w, 1); } if(!keep){ clean(u, p, 0); dis[0] = 0; } } int getSz(int u=0, int p=-1){ sz[u] = 1; for(auto [v, w] : g[u]){ if(v == p) continue; sz[u] += getSz(v, u); } return sz[u]; } int best_path(int N, int K, int H[][2], int L[]){ k = K; n = N; for(int i=1; i<n; i++){ g[H[i][0]].push_back({H[i][1], L[i]}); g[H[i][1]].push_back({H[i][0], L[i]}); } memset(dis, 0x3f, sizeof dis); dis[0] = 0; ans = n+ 100; getSz(); dfs(0); if(ans > n){ return -1; } return ans; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccjThmkV.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