Module: 动态图编程


Problem

1 /7


官僚

Theory Click to read/hide

Error

Problem

米尔科成为一家大公司的首席执行官。公司有 N 个人,编号从 1 到 N,Mirko 自己的编号是 1。除 Mirko 外,所有员工都有一个老板。一个老板可以有几个下属,但不能超过一个老板。

当 Mirko 收到投资者的任务时,他会将其交给编号最低的下属。那个下属也把它交给他的最低编号的下属,依此类推,直到这个工作交给一个没有下属完成它的倒霉工人。
那个工人得到 1 个硬币,他的老板得到 2 个硬币,那个老板的老板得到 3 个硬币,依此类推。然后真正做这份工作的人意识到这个资本主义制度是多么不公平,然后辞职。

Mirko 接受任务,直到公司只剩下一名员工——米尔科本人。然后他完成这个任务,获得1个硬币并离开公司。

他想知道每位前雇员总共收到了多少硬币。帮他解决这个问题。

输入:
第一行包含一个自然数N (1 ≤ N ≤ 2·105) —公司员工人数。下一行包含 N-1 个数字 a2, a3, ... an (1 ≤ a i i —第 i 个员工的负责人编号。

输出:
打印N个数,第i个数应该表示第i个员工收到了多少枚硬币。

示例:
  <正文>
说明:

下面是第二个例子的说明。

Mirko 将第一个任务交给工人 2,工人 2 将其传递给完成任务的工人 3。因此,工人 3 收到一枚硬币,工人 2 ——两个硬币,工人 1,Mirko 本人,—三枚硬币。之后,员工 3 辞职了。
Mirko 将第二个任务交给工人 2,工人 2 将其传递给工人 4,工人 4 立即将任务传递给完成任务的工人 5。之后,工人 5 收到一枚硬币,工人 4 ——两个硬币,工人 2 ——三枚硬币和 Mirko ——四枚硬币。员工 5 辞职。
完成第三个任务后,工人 4 收到一枚硬币,工人 2 ——两个硬币,和 Mirko ——三枚硬币,之后员工 4 退出。
完成第四个任务后,工人 2 收到一枚硬币,Mirko ——两个硬币,之后第二个员工退出。
最后,第五个任务由 Mirko 自己执行,为此获得一枚硬币,之后该过程停止。

Mirko 总共收到了 13 个硬币,一名员工收到了 2 个—— 8个硬币,工人4个—— 3 个硬币,以及工人 3 和 5 ——一枚硬币。
输入 输出
3
1 1
5 1 1
5
1 2 2 4
13 8 1 3 1