/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 3ms 2.613 MiB
#2 Accepted 3ms 2.816 MiB
#3 Accepted 3ms 2.77 MiB
#4 Wrong Answer 4ms 2.77 MiB
#5 Accepted 5ms 2.77 MiB
#6 Wrong Answer 7ms 2.773 MiB

Code

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;
int64_t ans, INF = -100;
int a[N], n, k;
vector<int> g[N];

vector<int64_t> dfs(int node, int pr = -1) {
  vector<int64_t> dp(k + 1, INF);
  dp[1] = a[node];
  for (auto &son : g[node]) {
    if (son == pr) continue;
    vector<int64_t> cdp = dfs(son, node);
    for (int i = 2; i <= k; i++) {
      if (cdp[i - 1] != INF) {
        dp[i] = max(dp[i], cdp[i - 1] + dp[1]);
      }
    }
  }
  ans = max(ans, dp[k]);
  return dp;
}

void solve(int cs) {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) {
    int u, v; cin >> u >> v;
    g[u].push_back(v);
    g[v].push_back(u);
  }
  dfs(1);
  cout << ans << "\n";
}

int32_t main() {
  ios::sync_with_stdio(!cin.tie(0));
  int t = 1;
  // cin >> t;
  for (int i = 1; i <= t; ++i) {
    solve(i);
  }
  return 0;
}

Information

Submit By
Type
Submission
Problem
P1160 Max path sum (Easy Version)
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-17 18:09:03
Judged At
2025-02-17 18:09:03
Judged By
Score
8
Total Time
7ms
Peak Memory
2.816 MiB