Submission #907508

#TimeUsernameProblemLanguageResultExecution timeMemory
907508pragmatistRoad Closures (APIO21_roads)C++17
0 / 100
2049 ms23412 KiB
#include <bits/stdc++.h> using namespace std; const int N = (int)1e5 + 7; const long long INF = (long long)1e18 + 7; const long long oo = (long long)1e15 + 7; const int inf = (int)1e9 + 7; int n, k; long long dp[N][2]; long long cost[201][201]; vector<pair<int, int> > g[N]; struct Data { long long x, y, z; }; void dfs(int v, int pr, int last) { for(auto [to, w] : g[v]) { if(to == pr) { continue; } dfs(to, v, w); } vector<Data> cur; for(auto [to, w] : g[v]) { if(to == pr) { continue; } cur.push_back({dp[to][0], w, dp[to][1]}); } int m = (int)g[v].size()-(v != pr); for(int i = 0; i <= m; ++i) { for(int j = 0; j <= m; ++j) { cost[i][j] = INF; } } cost[0][0] = 0; for(int i = 1; i <= m; ++i) { for(int j = 0; j <= m; ++j) { cost[i][j] = min(cost[i][j], cost[i-1][j]+cur[i-1].x); if(j) { cost[i][j] = min(cost[i][j], cost[i-1][j-1]+min(cur[i-1].x+cur[i-1].y, cur[i-1].z)); } } } int need = max(0, (int)g[v].size()-k); if(need <= m) { dp[v][0] = cost[m][need]; } else { dp[v][0] = INF; } need = max(need-(v != pr), 0); if(need <= m) { dp[v][1] = cost[m][need]+last; } else { dp[v][1] = INF; } } vector<long long> minimum_closure_costs(int _N, vector<int> _U, vector<int> _V, vector<int> _W) { n = _N; for(int i = 0; i < n-1; ++i) { int u = _U[i]; int v = _V[i]; int w = _W[i]; g[u].push_back({v, w}); g[v].push_back({u, w}); } vector<long long> ans; for(int i = 0; i < n; ++i) { k = i; dfs(0, 0, inf); ans.push_back(min(dp[0][0], dp[0][1])); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...