#arc112c. [arc112_c]DFS Game

[arc112_c]DFS Game

题目描述

高桥和青木将使用一个由nn个顶点组成的根树进行游戏,编号为11nn。树的根是顶点11。对于每个v=2,dots,nv=2,\\dots,n,顶点vv的父节点是pvp_v。初始时,每个顶点上有一枚硬币。此外,顶点11上有一个棋子。

高桥和青木交替进行以下操作,高桥先行:

  • 如果棋子所在的顶点上有一枚硬币:取走这枚硬币并结束他的回合。
  • 如果棋子所在的顶点上没有硬币:按照以下方式移动棋子(或结束游戏)。
    • 如果棋子所在顶点的子节点中有含有硬币的顶点,选择其中一个子节点,将棋子移动到该顶点,并结束他的回合。
    • 否则,如果棋子在根上,结束游戏;否则,将棋子移动到棋子所在顶点的父节点上,并结束他的回合。

高桥和青木都会以最优策略进行游戏,以获得尽可能多的硬币。求高桥可以获得的硬币数量。

约束条件

  • 2lenle1052\\le n \\le 10^5
  • 1lepvltv1\\le p_v \\lt v

输入

输入以以下格式从标准输入给出:

nn

p2p_2 dots\\dots pnp_n

输出

打印高桥在两位玩家都以最优策略进行游戏时可以获得的硬币数量。


示例输入 1

10
1 2 3 4 5 6 7 8 9

示例输出 1

10

在这个例子中,双方没有选择,游戏将始终按照以下方式进行,所以高桥可以得到每一个硬币:

  • 高桥拿走顶点11上的硬币。
  • 青木将棋子移动到顶点22
  • 高桥拿走顶点22上的硬币。
  • 青木将棋子移动到顶点33
  • vdots\\vdots
  • 高桥拿走顶点1010上的硬币。
  • 青木将棋子移动到顶点99
  • 高桥将棋子移动到顶点88
  • 青木将棋子移动到顶点77
  • vdots\\vdots
  • 高桥将棋子移动到顶点22
  • 青木将棋子移动到顶点11
  • 游戏结束。

示例输入 2

5
1 2 3 1

示例输出 2

2

首先,高桥拿走顶点11上的硬币。然后,青木可以将棋子移动到顶点22或顶点55。如果他将其移动到顶点22,青木最终只能得到顶点55上的硬币。另一方面,如果他将其移动到顶点55,青木最终可以得到顶点223344上的硬币。因为青木会以最优策略进行游戏,为了获得尽可能多的硬币,他选择将棋子移动到顶点55。因此,高桥可以得到两枚硬币。


示例输入 3

10
1 1 3 1 3 6 7 6 6

示例输出 3

5