Pagini recente » Cod sursa (job #2527154) | Cod sursa (job #2301722) | Cod sursa (job #2782277) | Cod sursa (job #2679070) | Cod sursa (job #2638775)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin( "asmax.in" );
ofstream fout( "asmax.out" );
const int MaxN = 16001;
vector<int> arb[MaxN];
int v[MaxN];
int viz[MaxN];
int mx[MaxN];
void DFS( int node ) {
mx[node] = v[node];
viz[node] = 1;
for ( int i = 0; i < arb[node].size(); ++i ) {
if ( !viz[arb[node][i]] ) {
DFS( arb[node][i] );
mx[node] = max( mx[node], mx[node] + mx[arb[node][i]] );
}
}
}
int main() {
int n, i, x, y;
fin >> n;
for ( i = 1; i <= n; ++i ) {
fin >> v[i];
}
for ( i = 1; i < n; ++i ) {
fin >> x >> y;
arb[x].push_back( y );
arb[y].push_back( x );
}
DFS( 1 );
int maxx = 0;
for ( i = 1; i <= n; ++i ) {
maxx = max( maxx, mx[i] );
}
fout << maxx;
fin.close();
fout.close();
return 0;
}