树形 DP
2026-06-26 20:06:49
发布于:上海
万能开头@78鼠鼠 @156****6690@仰天长啸你爹驾到@AC酱 @AUV
P1352 一眼 __ __
#include<bits/stdc++.h>
using namespace std;
int dp[114514][5];
vector<int>g[114514];
int a[114514];
int n,d;
void dfs(int u,int fa){
dp[u][0]=0;
dp[u][1]=a[u];
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
if(v==fa)continue;
dfs(v,u);
dp[u][0]+=max({dp[v][0],dp[v][1],0});
dp[u][1]+=max({dp[v][0],0});
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=2;i<=n;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}dfs(1,0);
cout<<max(dp[1][0],dp[1][1]);
return 0;
}
全部评论 1
- 置顶
请某些人不要在此评论区发神奇数字,神奇字母和神秘表情包,不要乱打键盘和不要乱点赞,还有神秘小网站,也不要发神秘小图片,请不要在此评论区发福瑞,英语的福瑞,更不要发英语的福瑞的意思,最不能发的是福瑞的图片,不要发形容词的缩写,也不要发骂人的话,不要发扫福瑞和福瑞的缩写,不要发动物的英语或中文
昨天 来自 上海
1也不要发尼克狐尼克
昨天 来自 上海
1也不要发和“轻松绷住”相关的内容
昨天 来自 上海
1
















有帮助,赞一个