模拟赛DAY 2 T2不老梦

【题目背景】
于万人中万幸得以相逢,刹那间澈净明通。
成为我所向披靡的勇气和惶恐,裂山海,堕苍穹。
爱若执炬迎风,炽烈而哀恸,诸般滋味皆在其中。
韶华宛转吟诵,苍凉的光荣,急景凋年深情难共。
——银临《不老梦》
【问题描述】
扶苏翻遍了歌单却没有找到一首歌能做这个题的题目背景,于是放上了扶苏最喜欢
的一首《不老梦》。
与 Day1 的第二题一样,今天的第二题依然是一道树论题。
我们定义一棵 n 个节点的树为一个有 n 个节点和 n-1 条边的无向连通图。
如果我们定义 u 是一颗树 T 的根,那么任意一个节点 v 到根的路径就是从 v 出发到
达点 u 的简单路径上所经过的点的点集。可以证明这样的简单路径有且仅有一条。
定义一个节点 x 是节点 y 的孩子,当且仅当 x 和 y 之间有边相连且 x 不在 y 到根的
路径中。如果 x 是 y 的孩子,那么定义 y 是 x 的家长节点。
如果我是 _rqy 那种毒瘤神仙的话,可能会问你每个节点的孩子数不超过 k 的 n 个节
点的带标号无根树一共有多少个,可惜这个问题我也不会,所以我不会问你这么毒瘤的
问题。
扶苏从一颗 n 个节点的树的 1 号节点出发,沿着树上的边行走。当然我们约定 1 号
节点是这棵树的根。他所行走的规定是:当扶苏在点 u 时,扶苏要么在 u 的孩子中选择
一个没有到达过得点 v 并行走到 v,要么选择回到 u的家长节点。
现在给每个节点一个权值 w,其中 i 号节点的权值为 wi。扶苏有一些石子,他想给
这棵树上的某一个节点放上石子。我们规定扶苏能在节点 u 放上石子当且仅当满足如下
条件:
1、扶苏当前在节点 u
2、对于 u 的所有孩子节点v,节点 v 被放上了 wv 颗石子。
但是,扶苏在任意时刻都可以取回任意节点的石子。
现在,扶苏想问问你对于每个节点,如果他想在 i 号节点上放 wi 颗石子,那么他一
开始需要准备多少石子。
【输入格式】
输入文件名为 yin.in。
输入文件中有且仅有一组数据,数据的第一行是一个整数 n 代表树的节点个数。
第二行有 n-1 个整数,第 i 个整数 pi 代表 i+1 号节点的家长节点的编号。
第三行有 n 个整数,第 i 个整数代表 wi。
【输出格式】
输出文件名为 yin.out。
输出一行 n 个整数,第 i 个整数代表想在 i 号节点上放 wi 颗石子需要准备的
石子个数。
 
【输入输出样例 1】
in
3
1 2
1 1 1
out
2 2 1
 
解释:
           
样例 1 的输入如左图,每个节点都需要放 1 块 石头。
如果在 1 号节点放石头,则从一号点运动到 2 号点,然后运动到 3 号点,在 3 号点上放一块
石头,返回 2 号点,在 2 号点上放一块石头, 同时收回三号点的石头,然后返回 1 号点,将 从 3 号点收回的石头放到 1 号点即可。一共需 要两块石头。
在 2、3 号节点放石头的方案类似。 
 
【输入输出样例 2】
in
3
1 1
1 1 1
out
3 1 1
【输入输出样例 3】
in
6
1 1 2 3 4
3 14 1 5 12 15
out
21 20 13 20 12 15 
 
样例 3 的输入如左图。
先从 1 号节点运动至 3 号节点,再运动至 5 号节点,在 5 号节点上放置 12 块石子,然后返回 3 号节点,在 3 号节点上放置 1 块石子,收回五号节点的 12块石子,返回 1 号节点。
然后运动到 2 号节点,通过 4 号节点运动到 6 号节点,放下 15 颗石子,返回 4 号节点放下 5 颗石子,时树上有的石子数为5(4号)+15(6号)+1(3号)=21颗。然后收回 6 号节点的石子,返回 2 号节点,放下 14 颗石子,收回 4 号节点的,返回 1 号节点,在 1 号节点上放置 3 颗石子,即可达到在 1 号节点上放石子的目的。
可以验证最大花费为 21。其他节点的答案同理。
       

猜你喜欢

转载自www.cnblogs.com/lcezych/p/11093298.html
今日推荐