Pagini recente » Cod sursa (job #2775791) | Cod sursa (job #2097114) | Cod sursa (job #2534849) | Istoria paginii runda/speed/clasament | Cod sursa (job #2771514)
#include <bits/stdc++.h>
using namespace std;
vector < int > g[16001];
int sum[16001];
int v[16001];
bool aux[16001];
void dfs( int nod )
{
sum[nod] = v[nod];
for (unsigned int i = 0; i < g[nod].size(); i++ )
{
int fiu = g[nod][i];
if ( !aux[fiu] )
{
aux[fiu] = 1;
dfs(fiu);
if ( sum[fiu] >= 0 )
sum[nod] += sum[fiu];
}
}
}
int main()
{
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int n;
cin >> n;
for ( int i = 1; i <= n; i ++ )
{
cin >> v[i];
}
for ( int i = 1; i < n; i ++ )
{
int a, b;
cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
int maxim = -100000;
aux[1] = 1;
dfs(1);
for ( int i = 1; i <= n; i ++ )
maxim = max( maxim, sum[i] );
cout << maxim;
}