Submission #363906

#TimeUsernameProblemLanguageResultExecution timeMemory
363906dolphingarlicChase (CEOI17_chase)C++14
30 / 100
154 ms76524 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; int n, k, p[100001]; vector<int> graph[100001]; ll dp[100001][101]; void dfs1(int node = 1, int parent = 0) { ll c_sum = 0; for (int i : graph[node]) if (i != parent) c_sum += p[i]; for (int i : graph[node]) if (i != parent) { dfs1(i, node); for (int j = 1; j <= k; j++) dp[node][j] = max({dp[node][j], dp[i][j], dp[i][j - 1] + c_sum}); } } int main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> k; for (int i = 1; i <= n; i++) cin >> p[i]; for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; graph[u].push_back(v); graph[v].push_back(u); } dfs1(); cout << dp[1][k]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...