Pagini recente » Cod sursa (job #2712368) | Cod sursa (job #2999498) | Cod sursa (job #354886) | Cod sursa (job #2823017) | Cod sursa (job #2770392)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n , v[16005];
vector < int > G[16005];
void dfs(int nod , int dad)
{
for(auto i : G[nod])
if(i != dad)
dfs(i , nod);
v[dad] += max(0 , v[nod]);
}
int main()
{
fin >> n;
for(int i = 1 ; i <= n ; i++)
fin >> v[i];
for(int i = 1 ; i < n ; i++)
{
int u , v;
fin >> u >> v;
G[u].emplace_back(v);
G[v].emplace_back(u);
}
dfs(1 , 0);
int mac = v[1];
for(int i = 2 ; i <= n ; i++)
mac = max(mac , v[i]);
fout << mac;
return 0;
}