Pagini recente » Cod sursa (job #1868680) | Cod sursa (job #907159) | Cod sursa (job #2357155) | Cod sursa (job #2415819) | Cod sursa (job #628780)
Cod sursa(job #628780)
#include <cstdio>
#include <vector>
#define MaxN 16005
#define infile "asmax.in"
#define outfile "asmax.out"
using namespace std;
vector <int> G[MaxN];
int N, uz[MaxN], maxv[MaxN], cost[MaxN];
void read()
{
int i,x,y;
freopen(infile,"r",stdin);
scanf("%d", &N);
for( i = 1; i <= N; ++i)
scanf("%d", &cost[ i ]);
for( i = 1 ; i < N; ++i)
{
scanf("%d %d", &x, &y);
G[x].push_back(y); G[y].push_back(x);
}
fclose(stdin);
}
void dfs(int nod)
{
int i;
uz[ nod ] = 1;
for( i = 0; i < G[ nod ].size(); ++i)
if(!uz[G[nod][i]])
{
dfs( G[nod][i] );
if( cost[ G[nod][i] ] > 0)
maxv[ nod ] += cost[ G[nod][i] ];
}
maxv[ nod ] += cost[ nod ];
}
void write()
{
int i, maxc=0;
for( i = 1; i <=N ; ++i)
if( maxv[i] > maxc )
maxc = maxv[ i ];
freopen(outfile,"w",stdout);
printf("%d\n", maxc);
fclose(stdout);
}
int main()
{
read();
dfs(1);
write();
return 0;
}