Pagini recente » Cod sursa (job #697809) | Cod sursa (job #810816) | Cod sursa (job #229789) | Cod sursa (job #1975658) | Cod sursa (job #839060)
Cod sursa(job #839060)
#include<stdio.h>
#include<vector>
#include<algorithm>
#define pb push_back
using namespace std ;
vector < long > v [ 16007 ] ;
vector < long > :: iterator it ;
long o , n , x , y , max2 , sol [ 16007 ] , sum [ 16007 ] , viz [ 16007 ] ;
void dfs( long u )
{
viz [ u ] = 1 ;
sol [ u ] = sum [ u ] ;
for( it = v [ u ] . begin ( ) ; it != v [ u ] . end ( ) ; ++ it )
if ( ! viz [ *it ] )
{
dfs ( *it ) ;
sol [ u ] += max ( sol [ *it ] , o ) ;
}
}
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 ] . push_back ( y ) ;
v [ y ] . push_back ( x ) ;
}
dfs ( 1 ) ;
for(long i = 1 ; i <= n ; ++ i )
max2 = max ( max2 , sol [ i ] ) ;
printf ( "%ld\n" , max2 ) ;
return 0 ;
}