Pagini recente » Statistici roma gia (romagia) | Istoria paginii grigore-moisil-2018/clasament/11-12 | Istoria paginii runda/simulare_oji_05_03_2023 | Cod sursa (job #1659987) | Cod sursa (job #2827445)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int NMAX = 16001;
int val[NMAX];
int dp[NMAX];
vector < int > Ad[NMAX];
int N;
void DP( int nod, int parent ){
dp[nod] = val[nod];
for( int i = 0; i < Ad[nod].size(); ++i ){
int w = Ad[nod][i];
if( w != parent ){
DP( w, nod );
if( dp[w] > 0 ) dp[nod] += dp[w];
}
}
}
int main()
{
fin >> N;
for( int i = 1; i <= N; ++i )
fin >> val[i];
int x, y;
for( int i = 1; i < N; ++i ){
fin >> x >> y;
Ad[x].push_back( y );
Ad[y].push_back( x );
}
DP( 1, 0 );
int vmax = -1000;
for( int i = 1; i <= N; ++i )
vmax = max( vmax, dp[i] );
fout << vmax << '\n';
return 0;
}