10分求助
查看原帖
10分求助
999767
dasigouride楼主2024/1/23 21:39
#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;
}
2024/1/23 21:39
加载中...