Pagini recente » Cod sursa (job #3219407) | Cod sursa (job #1976895) | Cod sursa (job #2725720) | Cod sursa (job #2697135) | Cod sursa (job #2871371)
#include <bits/stdc++.h>
#define NMax 16000
using namespace std;
ifstream fin ( "asmax.in" );
ofstream fout ( "asmax.out" );
int n;
int v[NMax + 1];
int dp[NMax + 1];
int a, b;
int smax;
vector<int> adj[NMax + 1];
void dfs ( int x, int p )
{
int s = 0;
for ( auto u: adj[x] )
{
if ( u != p )
{
dfs(u, x);
if ( dp[u] > 0 ) s += dp[u];
}
}
dp[x] += s;
}
int main()
{
fin >> n;
for ( int i = 1; i <= n; i++ )
{
fin >> v[i];
dp[i] = v[i];
}
for ( int i = 1; i < n; i++ )
{
fin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(1, 0);
smax = -1e9;
for ( int i = 1; i <= n; i++ )
smax = max(smax, dp[i]);
fout << smax;
return 0;
}