#include<bits/stdc++.h>
using namespace std;
const int N=6894;
int a[N];
int IN[N];
int f[N][2];
vector<int>g[N];
void dfs(int u){
f[u][1]=a[u];
f[u][0]=0;
for(auto v:g[u]){
dfs(v);
f[u][0]+=max(f[v][0],f[v][1]);
f[u][1]+=f[v][0];
}
}
void solve(){
int n;cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n-1;i++){
int u,v;cin>>u>>v;
g[v].push_back(u);
IN[u]=1;
}
int gen;
for(int i=1;i<=n;i++){
if(IN[i]==0 ){
gen=i;
break;
}
}
dfs(gen);
cout<<max(f[gen][0],g[gen][1]);
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _=1;
while(_--)solve();
}