Pagini recente » Cod sursa (job #1957332) | Cod sursa (job #3134162) | Cod sursa (job #1959348) | Cod sursa (job #1956202) | Cod sursa (job #2771513)
#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 = -1;
aux[1] = 1;
dfs(1);
for ( int i = 1; i <= n; i ++ )
maxim = max( maxim, sum[i] );
cout << maxim;
}