Submission #1205764

#TimeUsernameProblemLanguageResultExecution timeMemory
1205764namcutetdnRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN=2e5+1; const int MAXK=1e6+1; int n, k, u, v, w, sz[MAXN], dp[MAXK], ans=MAXN; bool isCentroid[MAXN]; vector<array<int, 2> > a[MAXN]; unordered_set<int>W; void DFS(int u, int p) { sz[u]=1; for (auto it:a[u]){ int v=it[0]; if(v==p or isCentroid[v]) continue; DFS(v, u); sz[u]+=sz[v]; } } int findCentroid(int u, int p, int treeSz) { for (auto it:a[u]){ int v=it[0]; if(v!=p and !isCentroid[v] and sz[v]>treeSz/2){ return findCentroid(v, u, treeSz); } } return u; } void calc(int u, int p, int h, int cur_w) { if(cur_w<=k){ if(dp[k-cur_w]!=MAXN) ans=min(ans, h+dp[k-cur_w]); } else return; W.insert(cur_w); for (auto it:a[u]){ int v=it[0], w=it[1]; if(v==p or isCentroid[v]) continue; calc(v, u, h+1, cur_w+w); } } void update(int u, int p, int h, int cur_w) { if(cur_w>k) return; dp[cur_w]=min(dp[cur_w], h); for (auto it:a[u]){ int v=it[0], w=it[1]; if(v==p or isCentroid[v]) continue; update(v, u, h+1, cur_w+w); } } void build(int u) { DFS(u, -1); int centroid=findCentroid(u, -1, sz[u]); isCentroid[centroid]=1; dp[0]=0; W.insert(0); for (auto it:a[centroid]){ int v=it[0], w=it[1]; if(!isCentroid[v]){ calc(v, centroid, 1, w); update(v, centroid, 1, w); } } for (auto x:W) dp[x]=MAXN; for (auto it:a[centroid]){ int v=it[0]; if(!isCentroid[v]){ build(v); } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i=1; i<n; i++){ cin >> u >> v >> w; a[u].push_back({v, w}); a[v].push_back({u, w}); } for (int i=0; i<=k; i++){ dp[i]=MAXN; } build(0); if(ans==MAXN) cout << -1; else cout << ans; return 0; }

Compilation message (stderr)

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