Submission #1284629

#TimeUsernameProblemLanguageResultExecution timeMemory
1284629vache_kocharyanDostavljač (COCI18_dostavljac)C++20
140 / 140
285 ms2328 KiB
#include <iostream> #include <vector> using namespace std; const int N = 500 + 5; vector<int> g[N]; int dp[N][N][2]; int a[N], n, m; void dfs(int node, int parent) { dp[node][0][0] = dp[node][0][1] = 0; dp[node][1][1] = dp[node][1][0] = a[node]; for (auto child : g[node]) { if (child == parent) { continue; } dfs(child, node); for (int time = m;time >=0;--time) { for (int timeChild = time;timeChild >= 0;--timeChild) { if (time - timeChild >= 2) { dp[node][time][0] = max(dp[node][time][0], dp[node][time - timeChild - 2][0] + dp[child][timeChild][1]); } if(time - timeChild - 1 >= 0) dp[node][time][0] = max(dp[node][time][0], dp[node][time - timeChild - 1][1] + dp[child][timeChild][0]); } for (int timeChild = time;timeChild >= 0;--timeChild) { if(time - timeChild - 2 >= 0) dp[node][time][1] = max(dp[node][time][1], dp[node][time - timeChild - 2][1]+dp[child][timeChild][1]); } } } } int main() { cin >> n >> m; for (int i = 1;i <= n;++i) { cin >> a[i]; } for (int i = 1;i < n;++i) { int x, y; cin >> x >> y; g[x].push_back(y); g[y].push_back(x); } dfs(1, 0); //for (int i = 1;i <= n;++i) //{ // for (int j = 0;j <= m;++j) // { // cout << "From " << i << " using " << j << " time." << endl; // cout << dp[i][j][1] << " " << dp[i][j][0] << endl; // } //} cout << max(dp[1][m][0], dp[1][m][1]); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...