Submission #1223651

#TimeUsernameProblemLanguageResultExecution timeMemory
1223651Jer도로 폐쇄 (APIO21_roads)C++20
0 / 100
17 ms3140 KiB
#include "roads.h" #include <bits/stdc++.h> #include <vector> using namespace std; typedef long long ll; const int MAXN = 205; int n; ll total = 0; ll dp[MAXN][MAXN]; #define w(i) i.first #define u(i) i.second vector<pair<int, int>> con[MAXN]; ll solve(int curr, int par, int k){ if (k < 0) return -LONG_LONG_MAX; if (dp[curr][k] != -1) return dp[curr][k]; vector<pair<ll, int>> best, out, dif; int j = 0; for (auto i : con[curr]){ if (u(i) == par) continue; best.push_back({solve(u(i), curr, k - 1) + w(i), j}); j++; } j = 0; for (auto i : con[curr]){ if (u(i) == par) continue; out.push_back({solve(u(i), curr, k), j}); j++; } for (int i = 0; i < best.size(); i++) dif.push_back({best[i].first - out[i].first, i}); ll res = 0; vector<bool> used (best.size(), false); sort(dif.begin(), dif.end(), greater<pair<ll, int>>()); for (int i = 0; i < k and i < best.size(); i++) if (dif[i].first > 0) used[dif[i].second] = true, res += best[dif[i].second].first; for (int i = 0; i < con[curr].size() -1; i++) { if (!used[i]) res += out[i].first; } dp[curr][k] = res; return res; } std::vector<long long> minimum_closure_costs(int N, std::vector<int> U, std::vector<int> V, std::vector<int> W) { n = N; for (int i = 0; i < n - 1; i++) con[U[i]].push_back({W[i], V[i]}), con[V[i]].push_back({W[i], U[i]}), total += W[i]; vector<ll> res; for (int k = 0; k < n; k++){ for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) dp[i][j] = -1; res.push_back(total - solve(0, -1, k)); } return res; }
#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...