Pagini recente » Cod sursa (job #1918027) | Cod sursa (job #2416835) | Cod sursa (job #308666) | Cod sursa (job #1375570) | Cod sursa (job #2917456)
#include <fstream>
#import <algorithm>
#import <vector>
#import <set>
#import <stack>
using namespace std;
main()
{
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int n;
cin>>n;
vector<int>a(n+1),dp(n+1,0);
for(int i=1;i<=n;i++)cin>>a[i];
vector<vector<int>>g(n+1);
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
int rez=-2e9;
auto dfs=[&](auto && dfs,int nod,int tata)->void
{
for(auto &c:g[nod])
{
if(c!=tata)
{
dfs(dfs,c,nod);
dp[nod]+=max(0,dp[c]);
}
}
dp[nod]+=a[nod];
rez=max(rez,dp[nod]);
};
dfs(dfs,1,1);
cout<<rez<<'\n';
}