30分RT
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll com[1000001]={0},lev[1000001]={0},dp[1000001]={0};
ll h[1000001];
ll n,OMO;
ll son[1000001]={0},fa[1000001]={0};
ll root=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>h[i];
for(int i=1;i<=n-1;i++){
cin>>son[i]>>OMO;
fa[son[i]]=OMO;
}
for(int i=1;i<=n-1;i++){
if(fa[fa[son[i]]]==0){
root=fa[son[i]];
}
}
for(int i=1;i<=n;i++){
dp[i]=max(h[son[i]],h[fa[son[i]]]);
if(i!=1)
dp[i]+=dp[i-1];
}
cout<<dp[root];
return 0;
}