#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int n,dp[6066][2],w[6066],fa[6066],ro[6066],root;
int ls;
void d(int a) {
for(int i=1; i<=n; i++) {
if(fa[i]==a) {
d(i);
dp[a][0]+=max(dp[i][0],dp[i][1]);
dp[a][1]+=dp[i][0];
}
}
dp[a][1]+=w[a];
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>w[i];
}
for(int i=1; i<n; i++) {
int ls;
cin>>ls;
cin>>fa[ls];
ro[ls]++;
}
for(int i=1; i<=n; i++) {
if(ro[i]==0) {
root=i;
break;
}
}
d(ls);
cout<<max(dp[root][1],dp[root][0]);
return 0;
}