#include <bits/stdc++.h>
using namespace std;
int w[100001];
vector<int> junior[100001];
int n;
int ans;
int rec(int i){
int mn=INT_MAX;
for(int j:junior[i])
mn=min(mn,rec(j));
if(mn!=INT_MAX)
ans=max(ans,w[i]-mn);
return min(mn,w[i]);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(NULL);
cin>>n;
int tmp,root;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=1;i<=n;i++){
cin>>tmp;
if(tmp!=-1)
junior[tmp].push_back(i);
else
root=i;
}
rec(root);
cout<<ans<<'\n';
}
Comments
Post a Comment