#include<bits/stdc++.h>
using namespace std;
vector<int>s[6005];
int f[6005][2],h[6005],x,y,i,rt,n;bool v[6005];
void dp(int x){
f[x][0]=0;f[x][1]=h[x];
for(i=0;i<s[x].size();i++){
int y=s[x][i];dp(y);
f[x][0]+=max(f[y][0],f[y][1]),f[x][1]+=f[y][0];
}
}
int main(){
cin>>n;for(i=1;i<=n;i++) cin>>h[i];
for(i=1;i<=n;i++){cin>>x>>y;s[y].push_back(x);v[x]=1;}
for(i=1;i<=n;i++) if(!v[i]){rt=i;break;}
dp(rt);
cout<<max(f[rt][0],f[rt][1]);
}