AT_arc112_c.[ARC112C] DFS Game

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

高桥君和青木君用一棵有 nn 个顶点的有根树进行游戏。树的每个顶点编号为 11 到 nn。树的根为顶点 11,对于 v=2,…,nv=2,\dots,n,顶点 vv 的父节点为 pvp_v。最开始,每个顶点上都有 11 枚硬币,且顶点 11 上放有棋子。

高桥君和青木君轮流进行如下操作,高桥君先手:

  • 如果棋子所在的顶点上有硬币,则获得该硬币,结束本回合。
  • 如果棋子所在的顶点上没有硬币,则按以下规则移动棋子(或结束游戏):
    • 如果该顶点的子节点中存在有硬币的顶点,可以选择其中任意一个,将棋子移动到该顶点,结束本回合。
    • 如果不存在这样的子节点,且当前顶点是根节点,则游戏结束。否则,将棋子移动到当前顶点的父节点,结束本回合。

高桥君和青木君都会采取最优策略,使自己获得的硬币数量最大。请你求出高桥君最终能获得的硬币数量。

输入格式

输入为以下格式,从标准输入读入。

nn p2p_2 p3p_3 …\dots pnp_n

输出格式

输出在双方都采取最优策略时,高桥君能获得的硬币数量。

输入输出样例

  • 输入#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

说明/提示

限制条件

  • 2≤n≤1052 \leq n \leq 10^5
  • 1≤pv<v1 \leq p_v < v

样例解释 1

由于双方都没有选择的余地,游戏必然按如下顺序进行,因此高桥君能获得所有硬币。

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

样例解释 2

首先,高桥君获得顶点 11 上的硬币。之后,青木君可以选择将棋子移动到顶点 22 或顶点 55。如果移动到顶点 22,青木君最终只能获得顶点 55 上的硬币;如果移动到顶点 55,青木君最终能获得顶点 2,3,42,3,4 上的硬币。由于青木君会采取最优策略,他会选择移动到顶点 55。因此,高桥君最终能获得 22 枚硬币。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页