Pagini recente » Cod sursa (job #2284931) | Cod sursa (job #1840814) | Cod sursa (job #2937980) | Cod sursa (job #1240834) | Cod sursa (job #2164387)
#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=-99999999, 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;
}