Pagini recente » Cod sursa (job #571247) | Cod sursa (job #577168) | Cod sursa (job #1283182) | Cod sursa (job #1473825) | Cod sursa (job #2164380)
#include <fstream>
#include <queue>
#include <vector>
#include <iostream>
using namespace std;
ifstream f ("asmax.in");
ofstream g ("asmax.out");
int n, m, val[16005], a, b, ma=0, nod, i, ok, fv[16005];
vector < int > G[16005];
void dfs ( int nod )
{
fv[nod] = 1;
for ( int i = 0 ; i < G[nod].size() ; i++ )
{
if ( fv[ G[nod][i] ] == 0 )
{
dfs( G[nod][i] );
val[nod] = max ( val[nod], val[nod] + val[ G[nod][i] ] );
}
}
}
int main()
{
f>>n;
for ( i = 1; i <= n ; i++ )
{
f>>val[i];
}
for ( i = 1 ; i <= n - 1 ; i++ )
{
f>>a>>b;
G[a].push_back(b);
G[b].push_back(a);
}
dfs(1);
for ( i = 1; i <= n ; i++ )
{
ma = max ( ma, val[i] );
}
g<<ma;
return 0;
}