#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<queue>
using namespace std;
struct node{
int a,b,m;
}d[100001];
int a[100001],h[100001];
struct nn{
int id,v;
};
priority_queue <nn> q;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=2;i<=n;i++)
{
int x;
cin>>x;
d[i].a=x;
d[i].b=i;
d[i].m=h[x];
h[x]=i;
}
q.push((nn){1,a[1]});
int minn=2147483647;
int cnt=1;
while(!q.empty())
{
int t=q.top().v;
int p=q.top().id;
q.pop();
cnt--;
if(minn>t*cnt)
minn=t*cnt;
if(!h[p])
break;
for(int i=h[p];i;i=d[i].m)
q.push((nn){d[i].b,a[d[i].b]}),cnt++;
}
cout<<minn;
return 0;
}
[Error] no match for 'operator<' (operand types are 'const nn' and 'const nn')