Pagini recente » Cod sursa (job #1129574) | Cod sursa (job #1113103) | Cod sursa (job #1966422) | Cod sursa (job #795252) | Cod sursa (job #2115855)
#include<iostream>
#include<fstream>
#include<vector>
#define DN 16050
using namespace std;
fstream fin("asmax.in",ios::in), fout("asmax.out",ios::out);
int arb[DN], dp[DN], n, maxim=-(DN*DN);
vector<int> v[DN];
void dfs(int nod, int pre)
{
dp[nod]=arb[nod];
for(auto x: v[nod])
{
if(x!=pre)
{
dfs(x, nod);
dp[nod]+=max(0,dp[x]);
}
}
maxim=max(maxim, dp[nod]);
}
int main()
{
int i, a, b;
fin>>n;
for(i=1;i<=n;i++) fin>>arb[i];
for(i=1;i<n;i++)
{
fin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1, 0);
fout<<maxim<<"\n";
}