比赛场次 559
比赛名称 4043级2023省选练习赛1
比赛状态 已结束比赛成绩
开始时间 2023-03-03 18:30:00
结束时间 2023-03-03 22:00:00
开放分组 全部用户
注释介绍 今日事,今日毕
题目名称 树的果实
输入输出 treesfruits.in/out
时间限制 2000 ms (2 s)
内存限制 256 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分
Gravatarop_组撒头屯 AAAAAAAAAA 0.515 s 9.28 MiB 100
Gravataryrtiop AAAAAAAAAA 0.659 s 11.52 MiB 100
Gravatarzxhhh AAAAAAAAAA 1.350 s 26.08 MiB 100
GravatarLfc_HeSn AAAAAAAAAA 2.383 s 11.83 MiB 100

树的果实

★★★   输入文件:treesfruits.in   输出文件:treesfruits.out   简单对比
时间限制:2 s   内存限制:256 MiB

【题目描述】

森林中生长着许多奇特的果树,它们不仅外形独特,其果实更是可口。这天,两只小虫 $Nileh$ 和 $Nixed$ 决定一起分享一颗果树。他们从早晨一直辛勤工作到下午,终于把这颗果树锯倒。他们观察着这颗果树,果树开始端是露出地面的根部,接着像其他果树一样,有着诸多分叉(如图所示就是一颗果树),在每个分叉处生长着果实,自然 $Nileh$ 和 $Nixed$ 的食物就是这些果实了!他们准备把果树分成两部分,每个虫虫得到各自的一部分,而分果树的方法就是选择一个分叉点,虫虫将他们咬断(自然分叉点上的果实也被扔掉了),这样果树就变成了两个部分(每个部分不一定是连在一起的):分叉点上面的部分和分叉点下面的部分。$Nileh$ 和 $Nixed$ 就会各自选一个部分吃啦!比如对于左边这颗果树,如果他们咬掉蓝色的果子,那么就被分为红色和黄色的两个部分。

考虑到被咬掉的果子会被浪费,他们想尽可能的减少浪费,于是虫虫给每个果子一个美味值,对于每个果子,他们决定计算如果咬掉这个果子,上面部分、下面部分和从树根到这个分叉点的路径中比这个果子更美味的果子各有多少个。他们以此来选择最终要被咬掉的果子是哪一个。遗憾的是果树可能很庞大,而小虫几乎是不会计算的,身为程序员的你帮帮他们吧。

【输入格式】

输入文件第一行一个正整数 $n(n \leq 10^5)$ 表示树的分叉数(包括树根)。

输入文件的第 $i(2 \leq i \leq n)$ 行一个数 $p_i$,表示分叉 $i$ 的上一级分叉的编号 $(p_i<i)$。($1$ 号分叉即树根,它没有上级分叉点)

输入文件的第 $n+i(1 \leq i \leq n)$ 行一个正整数 $a_i$,表示生长在 $i$ 号分叉点上的果实的美味值。(每个果子的美味值不相等)

【输出格式】

输出共 $n$ 行,每行三个数,分别表示咬掉第 $i$ 个果实后上面部分、下面部分、从树根到这个分叉点的路径中比它美味的果实数。

【样例1输入】

4
1
1
2
2
4
1
3

【样例1输出】

2 0 0
0 0 0
0 3 1
0 1 1

【样例2】

点击下载样例2

【数据规模】

对于 $100\%$ 的数据,$n \leq 10^5,a_i<5*10^6$。