Pagini recente » Cod sursa (job #2638683) | Cod sursa (job #1969895) | Cod sursa (job #2925443) | Cod sursa (job #2300884) | Cod sursa (job #2638774)
#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 );
fout << mx[1];
fin.close();
fout.close();
return 0;
}