1 条题解
-
0Guest LV 0 MOD
-
0
#include<bits/stdc++.h> using namespace std; #define MAXN 6005 int n,root; int r[6005],v[6005]; vector<int> son[6005]; int f[6005],g[6005]; void work(int x) { f[x]=0; g[x]=r[x]; for(int i=0; i<son[x].size(); i++) { work(son[x][i]); f[x]+=max(f[son[x][i]],g[son[x][i]]); g[x]+=f[son[x][i]]; } } int main() { cin>>n; for(int i=1; i<=n; i++) cin>>r[i]; for(int i=1; i<=n-1; i++) { int l,k; cin>>l>>k; son[k].push_back(l); v[l]=1; } for(int i=1; i<=n; i++) if(!v[i]) { root=i; break; } work(root); cout<<max(f[root],g[root])<<endl; return 0; } /* 输入 #1: 7 1 1 1 1 1 1 1 1 3 2 3 6 4 7 4 4 5 3 5 ans: 5 */
- 1
信息
- ID
- 1343
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 2
- 已通过
- 1
- 通过率
- 50%
- 上传者