#include<bits/stdc++.h>
#include<vector>
using namespace std;
const int N=1e6+5;
vector<int> t[N];
int n;
int f[N];
int e[N];
void dfs(int a)
{
for(auto x:t[a])
{
dfs(x);
}
e[f[a]]+=e[a];
}
int main()
{
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
int a;
scanf("%d",&a);
t[a].push_back(i);
f[i]=a;
}
for(int i=1;i<=n;i++)
{
cin>>e[i];
}
dfs(1);
for(int i=1;i<=n;i++)
{
printf("%d ",e[i]);
}
return 0;
}