Pagini recente » Cod sursa (job #974008) | Cod sursa (job #2358170) | Cod sursa (job #722146) | Cod sursa (job #2457829) | Cod sursa (job #2703029)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ( "asmax.in" );
ofstream g ( "asmax.out" );
const int NMAX = 16002;
vector<int>G[NMAX];
int v[NMAX], ans, dp[NMAX];
bool vis[NMAX];
void DFS ( int x )
{
vis[x] = 1;
dp[x] = v[x];
for ( auto i : G[x] )
if ( vis[i] == 0 )
{
DFS ( i );
if ( dp[i] > 0 )
dp[x] += dp[i];
}
ans = max ( ans, dp[x] );
}
int main()
{
int n;
f >> n;
for ( int i = 1; i <= n; i++ )
f >> v[i];
for ( int i = 1; i < n; i++ )
{
int x, y;
f >> x >> y;
G[x].push_back ( y );
G[y].push_back ( x );
}
DFS ( 1 );
g << ans;
return 0;
}