Pagini recente » Cod sursa (job #2828697) | Cod sursa (job #2981377) | Cod sursa (job #95920) | Cod sursa (job #3230639) | Cod sursa (job #1168201)
#include <cstdio>
#include <vector>
#define MAXN 16001
using namespace std;
int val[MAXN];
vector <int> G[MAXN];
bool viz[MAXN];
void DFS( int nod ) {
viz[nod] = true;
for( int i = 0 ; i < G[nod].size() ; ++i )
if( !viz[G[nod][i]] ) {
DFS( G[nod][i] );
if( val[G[nod][i]] > 0 )
val[nod] += val[G[nod][i]];
}
}
int main () {
FILE *f, *g;
f = fopen( "asmax.in", "r" );
g = fopen( "asmax.out", "w" );
int n, x, y, max;
fscanf( f, "%d", &n );
for( int i = 1 ; i <= n ; ++i )
fscanf( f, "%d", &val[i] );
for( int i = 1 ; i < n ; ++i ) {
fscanf( f, "%d%d", &x, &y );
G[x].push_back( y );
G[y].push_back( x );
}
DFS( 1 );
max = -2000000000;
for( int i = 1 ; i <= n ; ++i )
if( val[i] > max )
max = val[i];
fprintf( g, "%d\n", max );
fclose( f );
fclose( g );
return 0;
}