题目描述
给定一棵以节点 为根的包含 个节点的树。对于每个节点 (),其父节点记为 ,表示节点 与 之间有一条边。初始时,一个棋子位于节点 。
本题中,时间从 开始离散递增。共有 个互不重叠的时间区间 ,每个区间内会有一个目标出现在节点 。你可以在任意时刻(包括时刻 )切断任意数量的树边(允许多次操作),且切断的边将永久移除。
在任意时刻:
- 若当前时刻处于某个 区间内(即目标活跃),且
- 棋子与目标位于同一连通分量中,且
- 棋子当前不在目标节点上,
则棋子会沿着唯一简单路径向目标节点移动一步。若棋子到达目标节点(或初始时已在目标节点),则视为一次命中。
你的任务是:通过策略性切断边,确定棋子能够命中任一目标的最早可能时刻。若无法命中任何目标,输出 。
输入格式
第一行:两个整数 和 (),分别表示树的大小和区间数量。
第二行: 个整数 (),表示节点 到 的父节点编号。
接下来 行:每行三个整数 (,),描述第 个目标出现的节点及时间区间。
保证所有区间按顺序给出且互不重叠,即对任意 ,满足 。
输出格式
输出一个整数:命中目标的最早时刻;若不可能,输出 。
样例
8 3
1 1 1 4 4 6 7
5 1 1
8 2 3
4 5 5
5
样例1解释
在第一个测试案例中,一种可能的最优策略描述如下:
时刻 :棋子从节点 移动到节点 。移动完成后,我们切断节点 和 之间的边。
时刻 和 :由于棋子所在的节点 与目标节点 不连通,棋子保持不动。
时刻 :树上没有目标出现,棋子依然保持静止。
时刻 :目标恰好出现在棋子所在的节点 ,达成命中条件。
可以证明,不存在任何策略能在时刻 之前实现命中。因此,该案例的答案为 。