Pagini recente » Cod sursa (job #2420750) | Cod sursa (job #408623) | Cod sursa (job #437410) | Cod sursa (job #454243) | Cod sursa (job #2291402)
#include <iostream>
#include <fstream>
#include <vector>
#define pb push_back
using namespace std ;
ifstream f ( "asmax.in" ) ;
ofstream g ( "asmax.out" ) ;
const int NR = 16005 ;
vector < int > v [ NR ] ;
vector < int > c ( NR ) ;
vector < bool > viz ( NR , false ) ;
int maxim = - ( 1 << 31 ) ;
int dp ( int nod )
{
viz [ nod ] = true ;
if ( !v [ nod ].size() ) return max ( 0 , c [ nod ] ) ;
for ( auto vecin : v [ nod ] )
if ( !viz [ vecin ] ) c [ nod ] += dp ( vecin ) ;
if ( c [ nod ] > maxim ) maxim = c [ nod ] ;
return max ( 0 , c [ nod ] ) ;
}
int main ()
{
int n ; f >> n ;
for ( int i = 1 ; i <= n ; ++ i ) f >> c [ i ] ;
for ( int i = 1 ; i < n ; ++ i ) { int a , b ; f >> a >> b ; v [ a ].pb(b) ; v [ b ].pb(a) ; }
dp ( 1 ) ;
g << maxim << "\n" ;
f.close() ;
g.close() ;
return 0 ;
}