萌新妹子初学树形dp 60pts求调

P1352 没有上司的舞会

@[FiveFourierTransform](/user/912248) ``` #include <cstdio> #include <vector> #include <algorithm> int dp[6030][2], v[6030], n, r; std::vector<int>c[6030]; bool has_fa[6030]; void dfs (int i) { dp[i][1] = v[i]; for (int j = 0; j < c[i].size(); ++j) { dfs(c[i][j]); dp[i][0] += std::max(dp[c[i][j]][0], dp[c[i][j]][1]); dp[i][1] += dp[c[i][j]][0]; } } int main () { scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%d", &v[i]); for (int i = 1; i <= n - 1; ++i) { int l, k; scanf("%d%d", &l, &k); c[k].push_back(l); has_fa[l] = 1; } for (int i = 1; i <= n; ++i) if(!has_fa[i]){ r = i; break; } dfs(r); printf("%d", std::max(dp[r][0], dp[r][1])); return 0; }
by lraM416 @ 2023-03-29 19:58:22


|