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