Pagini recente » Cod sursa (job #124738) | Cod sursa (job #2920123) | Cod sursa (job #2853087) | Cod sursa (job #72292) | Cod sursa (job #1635263)
#include <algorithm>
#include <cstdio>
#include <vector>
const int VMAX = 16005;
using namespace std;
int r=-1e9;
int val[VMAX];
vector<int> cox[VMAX];
int dfs(int p, int u){
int t,tval=val[u];
for(int i=0; i<cox[u].size(); ++i){
if(cox[u][i]==p)
continue;
t=dfs(u, cox[u][i]);
if(t>0)
tval+=t;
}
r=max(r,tval);
return tval;
}
int main(void){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
int n,x,y;
scanf("%d",&n);
for(int i=1; i<=n; ++i)
scanf("%d",&val[i]);
for(int i=1; i<n; ++i){
scanf("%d%d",&x,&y);
cox[x].push_back(y);
cox[y].push_back(x);
}
dfs(0,1);
printf("%d",r);
return 0;
}