1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int MAXN = 6000; int n; int r[MAXN + 5]; vector<int> e[MAXN + 5]; int f[MAXN + 5][2]; void dfs(int u, int fa) { f[u][0] = 0; f[u][1] = r[u]; for (int v : e[u]) { if (v == fa) continue; dfs(v, u); f[u][0] += max(f[v][1], f[v][0]); f[u][1] += f[v][0]; } } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) cin >> r[i]; for (int i = 1; i <= n - 1; i++) { int u, v; cin >> u >> v; e[u].push_back(v); e[v].push_back(u); } dfs(1, 0); cout << max(f[1][0], f[1][1]); return 0; }
- 1
信息
- ID
- 2161
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 30
- 已通过
- 16
- 上传者