Pagini recente » Cod sursa (job #1745687) | Cod sursa (job #231542) | Cod sursa (job #2890395) | Cod sursa (job #3175333) | Cod sursa (job #839070)
Cod sursa(job #839070)
#include<stdio.h>
#include<vector>
#include<algorithm>
#define pb push_back
using namespace std ;
vector < long > v [ 16007 ] ;
long n , x , y , max2 = - 10000000 , sol [ 16007 ] , sum [ 16007 ] ;
bool viz [ 16007 ] ;
void dfs ( long u )
{
viz [ u ] = 1 ;
sol [ u ] = sum [ u ] ;
for( vector < long > :: iterator it = v [ u ] . begin ( ) ;it != v [ u ] . end ( ) ; ++ it )
if ( ! viz[ * it ] )
{
dfs ( * it ) ;
sol [ u ] += max ( ( long ) 0 ,sol [ * it ] ) ;
max2 = max ( max2 , sol [ u ] ) ;
}
}
int main()
{
freopen ( "asmax.in" , "r" , stdin ) ;
freopen ( "asmax.out" , "w" , stdout ) ;
scanf ( "%ld" , & n ) ;
for( long i = 1 ; i <= n ; ++ i )
scanf ( "%ld" , & sum [ i ] ) ;
for( long i = 1 ; i <= n - 1 ; ++ i )
{
scanf ( "%ld%ld" , & x , & y ) ;
v [ x ] . pb ( y ) ;
v [ y ] . pb ( x ) ;
}
dfs ( 1 ) ;
printf ( "%ld\n" , max2 ) ;
return 0 ;
}