Submission #1155394

#TimeUsernameProblemLanguageResultExecution timeMemory
1155394andrewpRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pii pair<int,int> #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() const int N=1e6+10, INF=(int)(1e9); #define int ll int n, k, sz[N], ans=INF; vector<pii> g[N], anc; map<int, int> dp; vector<int> vec; bool removed[N]; int dfs_sz(int x, int par) { sz[x]=1; for (auto u:g[x]) { if (removed[u.first]||u.first==par) continue; sz[x]+=dfs_sz(u.first, x); } return sz[x]; } int get_cent(int x, int n_, int par) { for (auto u:g[x]) { if (removed[u.first]||u.first==par) continue; if (sz[u.first]*2>n_) return get_cent(u.first, n_, x); } return x; } void upd(int x, int d1, int d2, int par) { anc.pb(make_pair(d2, d1)); // cout << "upd " << x << ' ' << d1 << ' ' << d2 << ' ' << par << '\n'; if (k>=d2) ans=min(ans, d1+dp[k-d2]); // if (d1+dp[k-d2]==1) { // cout << d1 << ' ' << k-d2 << ' ' << dp[k-d2] << '\n'; // } for (auto u:g[x]) { if (removed[u.first]||u.first==par) continue; upd(u.first, d1+1, d2+u.second, x); } } void build_cent(int x) { int cen=get_cent(x, dfs_sz(x, -1), -1); dp[0]=0; for (auto u:g[cen]) { if (removed[u.first]) continue; upd(u.first, 1, u.second, cen); for (auto v:anc) { if (dp[v.first]==INF) vec.pb(v.first); dp[v.first]=min(dp[v.first], v.second); } anc=vector<pii>(); } // cout << "si " << vec.size() << '\n'; // for (int u:vec) // cout << "? " << u << ' ' << dp[u] << '\n'; for (int u:vec) dp[u]=INF; removed[cen]=true; vec=vector<int>(); for (auto u:g[cen]) { if (removed[u.first]) continue; build_cent(u.first); } } int32_t main () { ios::sync_with_stdio(false), cin.tie(0); cin >> n >> k; for (int i=1; i<=k; i++) dp[i]=INF; for (int i=1; i<n; i++) { int u, v, w; cin >> u >> v >> w; u++, v++; g[u].pb(make_pair(v, w)); g[v].pb(make_pair(u, w)); } build_cent(1); cout << (ans==INF?-1:ans) << '\n'; return 0; } /* 11 12 0 1 3 0 2 4 2 3 5 3 4 4 4 5 6 0 6 3 6 7 2 6 8 5 8 9 6 8 10 7 2 4 3 0 1 1 1 2 2 1 3 4 2 */

Compilation message (stderr)

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