#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
const int mxn=2e5+5;
vector<int>g[mxn],a(mxn);
ll res=0;
ll dfs(int i,int p,int l,int r){
if(g[i].empty()){
res+=1ll*a[i]*l;
return l;
}
ll sum=0;
for(int j:g[i])if(j!=p)sum+=dfs(j,i,l,r);
if(sum>=r){
res+=1ll*a[i]*(sum-r);
return r;
}
return sum;
}
void init(std::vector<int> p, std::vector<int> w){
for(int i=0;i<(int)p.size();i++)g[p[i]].push_back(i),a[i]=w[i];
}
long long query(int l, int r){
res=0;
dfs(0,-1,l,r);
return res;
}