/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Wrong Answer 1ms 532.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Wrong Answer 1ms 496.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;

#define all(a) a.begin(), a.end()
#define el "\n"
#define int long long

const int INF = LLONG_MIN;

vector<vector<int>> adj;
vector<int> a;
int dp[100005][305];

void dfs(int node, int par, int k) {
    vector<int> children;
    for (int child : adj[node]) {
        if (child != par) {
            dfs(child, node, k);
            children.push_back(child);
        }
    }

    // Base case: No steps taken, only the node value itself
    dp[node][0] = a[node];

    // Merge children DP states
    for (int i = 1; i <= k; i++) {
        int best = INF;
        for (int child : children) {
            if (i - 1 >= 0) {
                best = max(best, dp[child][i - 1] + a[node]);
            }
        }
        dp[node][i] = best;
    }
}

void solve() {
    int n, k;
    cin >> n >> k;
    
    a.resize(n);
    adj.assign(n, vector<int>());

    for (int &x : a) cin >> x;

    for (int i = 0; i < n - 1; i++) {
        int u, v;
        cin >> u >> v;
        u--, v--;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    // Initialize DP table
    for (int i = 0; i < n; i++)
        for (int j = 0; j <= k; j++)
            dp[i][j] = INF;

    dfs(0, -1, k);

    // Find the best answer among all nodes
    int ans = INF;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= k; j++) {
            ans = max(ans, dp[i][j]);
        }
    }

    if (ans < 0) ans = -1;
    cout << ans << el;
}

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int t = 1;
    while (t--) {
        solve();
    }

    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 17:04:18
Judged At
2025-02-17 17:04:18
Judged By
Score
4
Total Time
1ms
Peak Memory
532.0 KiB