Pagini recente » Cod sursa (job #2173786) | Cod sursa (job #1958704) | Cod sursa (job #2152793) | Cod sursa (job #2721081) | Cod sursa (job #198320)
Cod sursa(job #198320)
# include <stdio.h>
# include <vector>
# include <algorithm>
using namespace std;
# define FIN "dosare.in"
# define FOUT "dosare.out"
# define MAXN 16001
# define ll long long
vector <ll> H[MAXN];
ll A[MAXN];
ll P[MAXN];
ll s;
ll N,i,x;
void parcurg(ll nod)
{
ll j,len;
len = H[nod].size();
for (j = 0; j < len; ++j)
parcurg(H[nod][j]);
for (j = 0; j < len; ++j)
P[j+1] = A[H[nod][j]];
sort(P+1,P+len+1);
for (j = len; j >= 1; --j)
{
A[nod] +=P[j];
s += (len - j + 1) * P[j];
}
}
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%lld",&N);
for (i = 2; i <= N; ++i)
{
scanf("%lld",&x);
H[x].push_back(i);
}
H[0].push_back(1);
for (i = 1; i <= N; ++i)
scanf("%lld",&A[i]);
s = 0;
parcurg(0);
printf("%lld",s);
return 0;
}