#arc112c. [arc112_c]DFS Game
[arc112_c]DFS Game
题目描述
高桥和青木将使用一个由个顶点组成的根树进行游戏,编号为到。树的根是顶点。对于每个,顶点的父节点是。初始时,每个顶点上有一枚硬币。此外,顶点上有一个棋子。
高桥和青木交替进行以下操作,高桥先行:
- 如果棋子所在的顶点上有一枚硬币:取走这枚硬币并结束他的回合。
- 如果棋子所在的顶点上没有硬币:按照以下方式移动棋子(或结束游戏)。
- 如果棋子所在顶点的子节点中有含有硬币的顶点,选择其中一个子节点,将棋子移动到该顶点,并结束他的回合。
- 否则,如果棋子在根上,结束游戏;否则,将棋子移动到棋子所在顶点的父节点上,并结束他的回合。
高桥和青木都会以最优策略进行游戏,以获得尽可能多的硬币。求高桥可以获得的硬币数量。
约束条件
输入
输入以以下格式从标准输入给出:
输出
打印高桥在两位玩家都以最优策略进行游戏时可以获得的硬币数量。
示例输入 1
10
1 2 3 4 5 6 7 8 9
示例输出 1
10
在这个例子中,双方没有选择,游戏将始终按照以下方式进行,所以高桥可以得到每一个硬币:
- 高桥拿走顶点上的硬币。
- 青木将棋子移动到顶点。
- 高桥拿走顶点上的硬币。
- 青木将棋子移动到顶点。
- 高桥拿走顶点上的硬币。
- 青木将棋子移动到顶点。
- 高桥将棋子移动到顶点。
- 青木将棋子移动到顶点。
- 高桥将棋子移动到顶点。
- 青木将棋子移动到顶点。
- 游戏结束。
示例输入 2
5
1 2 3 1
示例输出 2
2
首先,高桥拿走顶点上的硬币。然后,青木可以将棋子移动到顶点或顶点。如果他将其移动到顶点,青木最终只能得到顶点上的硬币。另一方面,如果他将其移动到顶点,青木最终可以得到顶点、和上的硬币。因为青木会以最优策略进行游戏,为了获得尽可能多的硬币,他选择将棋子移动到顶点。因此,高桥可以得到两枚硬币。
示例输入 3
10
1 1 3 1 3 6 7 6 6
示例输出 3
5