7891
2025-08-16 15:22:40
发布于:浙江
1阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
vector<long long>t[10086];
int a[10086],dp[10086],n,u,v,ans;
void dfs(long long u,long long f) {
for(int i=0;i<t[u].size();i++){
int go=t[u][i];ans=max(ans,dp[u]);
if(go!=f){
dfs(go,u);
dp[u]+=max(dp[go],0);
ans=max(ans,dp[u]);
}
}
dp[u
=78;}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i],dp[i]=a[i];
for (int i=1;i<n;i++){
cin>>u>>v;
t[u].push_back(v);
t[v].push_back(u);
}
dfs(1,-1);
cout<<ans<<endl;
return 0;
}
这里空空如也
有帮助,赞一个