Pagini recente » Cod sursa (job #63958) | Cod sursa (job #752815) | Cod sursa (job #3256834) | Cod sursa (job #1629330) | Cod sursa (job #554857)
Cod sursa(job #554857)
#include <cstdio>
#include <climits>
#include <vector>
using namespace std;
#define N 16010
#define pb push_back
int n;
int v[N];
vector< int > a[N];
int rez = INT_MIN;
inline void citire() {
scanf("%d",&n);
for(int i=1; i<=n; ++i)
scanf("%d",&v[i]);
int x,y;
for(int i=1; i<n; ++i) {
scanf("%d%d",&x,&y);
a[x].pb(y);
a[y].pb(x);
}
}
void dfs(int nod,int tata) {
for(size_t i=0,lim=a[nod].size(); i<lim; ++i) {
if(a[nod][i]==tata)
continue;
dfs(a[nod][i],nod);
v[nod] += v[a[nod][i]];
}
if(v[nod]>rez)
rez = v[nod];
if(v[nod]<0)
v[nod] = 0;
}
int main() {
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
citire();
dfs(1,0);
printf("%d\n",rez);
return 0;
}