#P16180. [Ncpc2019]Flow Finder水流还原
[Ncpc2019]Flow Finder水流还原
题目描述
去年夏天,制图师 Carla 代表 National Center for Positioning and Charting(NCPC)前往遥远的北方考察,目标是测量一套河流水系中的水流量。由于该地区十分偏远,而 Carla 又并不是很喜欢冒险,她只测量了其中一部分位置的水流量。
Carla 担心 NCPC 明年夏天又会派她回到那片荒野,于是她向算法专家,也就是你,求助:是否可以根据已有数据重建缺失的水流量?
这套河流水系用一棵有根树表示,树有 个顶点,编号为 到 。树的叶子是水源,其余顶点表示汇流处,即多条河流汇合的位置。水从编号较大的顶点流向编号较小的顶点。顶点 是树根,表示水系入海口。
每个水源的水流量可以是任意正整数;每个汇流处的水流量等于其所有子节点水流量之和。
现在给出这棵树,以及部分顶点的水流量。你的任务是求出所有顶点的水流量;如果无法唯一确定,或者给出的数据本身矛盾,则输出 impossible。

输入格式
第一行包含一个整数 ,表示树的顶点数。
第二行包含 个整数 ,其中 表示顶点 的父节点编号。
第三行包含 个整数 ,其中 表示顶点 的水流量。
- 如果 ,表示该顶点水流量未知;
- 如果 ,则 就是该顶点已知的水流量。
已知值满足:
注意:未知值补出后可以大于 ,只要求是正整数。
输出格式
如果所有 个顶点的水流量都能唯一重建,按顶点编号从小到大输出这些水流量,每个数一行。
否则输出:
impossible
样例
输入 #1
10
1 2 3 2 1 6 7 7 6
0 4 2 2 0 5 0 2 0 2
输出 #1
9
4
2
2
2
5
3
2
1
2
输入 #2
5
1 2 2 1
4 0 0 0 1
输出 #2
impossible
输入 #3
4
1 1 1
3 2 1 0
输出 #3
impossible