1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; const int N=6010; int n; int h[N],ne[N],e[N],idx; int happy[N]; int f[N][2]; bool has_fa[N]; void add(int a,int b) { e[idx]=b,ne[idx]=h[a],h[a]=idx++; } void dfs(int u) { f[u][1]=happy[u]; for(int i=h[u];i!=-1;i=ne[i]) { int j=e[i]; dfs(j); f[u][1]+=f[j][0]; f[u][0]+=max(f[j][0],f[j][1]); } } int main() { cin>>n; for(int i=1;i<=n;i++) cin>>happy[i]; memset(h,-1,sizeof h); for(int i=0;i<n-1;i++) { int a,b; cin>>a>>b; add(b,a); has_fa[a]=true; } int root=1; while(has_fa[root]) root++; dfs(root); cout<<max(f[root][1],f[root][0])<<endl; return 0; }
- 1
信息
- ID
- 768
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者