#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int>w;
int n,x,y,ss,sum[6001],a[6001],f[6001],dp[6001];
bool b[6001],bb[6001],c[6001];
void ff(int o) {
for(int i=1; i<=sum[o]; i++) {
int u=w[ {o,i}];
for(int j=1; j<=sum[u]; j++) {
int uu=w[ {u,j}];
if(!c[uu])c[uu]=1,ff(uu);
dp[o]+=dp[uu];
}
}
for(int i=1; i<=sum[o]; i++) {
int u=w[ {o,i}];
if(!c[u])c[u]=1,ff(u);
dp[o]=max(dp[o],dp[u]);
}
return;
}
int main() {
cin>>n;
for(int i=1; i<=n; i++)f[i]=i;
for(int i=1; i<=n; i++) {
cin>>a[i];
if(a[i]<0)a[i]=0;
}
for(int i=1; i<=n; i++)dp[i]=a[i];
for(int i=1; i<n; i++){
cin>>x>>y;
w[ {y,++sum[y]}]=x;
f[x]=y;
b[x]=1;
}
for(int i=1;i<=n;i++){
if(!b[i]){
ff(i);
ss+=dp[i];
}
}
cout<<ss;
}