Submission #1222474

#TimeUsernameProblemLanguageResultExecution timeMemory
1222474Bui_Quoc_CuongRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
/* 29 . 03. 2008 */ # include <bits/stdc++.h> using namespace std ; const int N = 2e5 + 5 ; const int M = 1e6 + 5 ; const long long inf = 1e18 ; int n, k ; vector <pair<int,int>> g[N] ; int is_centroid[N], sz[N] ; int cnt[M] ; int ans ; void dfs(int u, int p) { sz[u] = 1 ; for(pair<int, int> x : g[u]) { int v = x.first ; if(v == p || is_centroid[v]) continue ; dfs(v, u) ; sz[u]+= sz[v] ; } } int findCentroid(int u, int p, int big) { for(pair<int, int> x : g[u]) { int v = x.first ; if(v == p || is_centroid[v]) continue ; if(sz[v] > big / 2) return findCentroid(v, u, big) ; } return u ; } int max_depth ; void updateAns(int u, int p, int t, int d, int w) { if(w > k) return ; if(t == 1) cnt[w] = min(cnt[w], d) ; else ans = min(ans, cnt[k - w] + d) ; max_depth = max(max_depth, w) ; for(pair<int, int> x : g[u]) { int v = x.first , len = x.second ; if(v == p || is_centroid[v]) continue ; updateAns(v, u, t, d + 1, w + len) ; } } void buildCentroid(int u) { dfs(u, - 1) ; int centroid = findCentroid(u, - 1, sz[u]) ; is_centroid[centroid] = 1 ; max_depth = 0 ; for(pair<int, int> x : g[centroid]) { int v = x.first , w = x.second ; if(is_centroid[v]) continue ; updateAns(v, centroid, 0, 1, w) ; updateAns(v, centroid, 1, 1, w) ; } for(int i = 1; i <= max_depth; i++) cnt[i] = 2e9 ; for(pair<int, int> x : g[centroid]) { int v = x.first ; if(!is_centroid[v]) buildCentroid(v) ; } } void solve() { for(int i = 0; i <= k; i++) cnt[i] = 2e9 ; ans = 2e9 ; cnt[0] = 0 ; buildCentroid(1) ; cout << (ans >= 2e9 ? - 1 : ans) ; } array <int, 2> E[N]; signed main() { #define task "race" ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0) ; // if(fopen(task".inp", "r")) { // freopen(task".inp","r",stdin) ; freopen(task".out","w",stdout) ; // } // if(fopen(".inp","r")) { // freopen(".inp","r",stdin) ; freopen(".out","w",stdout) ; // } cin >> n >> k ; for(int i = 1; i < n; i++) { int u, v, w ; cin >> u >> v; u++, v++ ; E[i] = {u, v}; // g[u].emplace_back(make_pair(v, w)) ; g[v].emplace_back(make_pair(u, w)) ; } for(int i = 1; i < n; i++){ int w; cin >> w; int u = E[i][0], v = E[i][1]; g[u].emplace_back(make_pair(v, w)) ; g[v].emplace_back(make_pair(u, w)) ; } solve() ; cerr << "\nTime :" << 0.001 * clock() << "s " ; return 0 ; } /* Watbor */

Compilation message (stderr)

/usr/bin/ld: /tmp/ccqKZs5J.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccnt61YA.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccqKZs5J.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