Pagini recente » Cod sursa (job #3164455) | Cod sursa (job #120048) | Cod sursa (job #178583) | Cod sursa (job #178562) | Cod sursa (job #367444)
Cod sursa(job #367444)
#include <cstdio>
#include <vector>
#define DIM 16005
#define INF -1000
using namespace std;
vector <int> G[DIM];
int a[DIM], i, n, x, y, visited[DIM], Rez[DIM];
int maxim = INF;
void read ()
{
scanf ("%d\n",&n);
for (i = 1; i <= n; i++ ) scanf ("%d",&a[i]);
for (i = 1; i < n ; i++ )
{
scanf ("%d%d\n",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
}
void dfs ( int x )
{
int i;
visited [x] = 1;
Rez [x] = a[x];
for (i = 0; i < G[x].size(); i++)
{
if ( ! visited [ G[x][i] ] ) {
dfs ( G[x][i] );
if ( Rez [ G[x][i] ] > 0 ) Rez [x] += Rez[ G[x][i] ];
}
}
}
void solve () {
for (i = 1; i <= n; i++) if ( maxim < Rez[i] ) maxim = Rez[i];
printf ("%d\n", maxim);
}
int main()
{
freopen ("asmax.in","r",stdin);
freopen ("asmax.out","w",stdout);
read();
dfs(1);
solve();
return 0;
}