loj#P6814. 「THUPC 2022 初赛」赫露艾斯塔
「THUPC 2022 初赛」赫露艾斯塔
题目描述
给定一棵 个顶点的有根树,顶点编号为 , 号顶点为根。定义有向邻域 为以 为根的子树中,距离 小于 的顶点构成的集合,其中 , 为整数。
给出 个有向邻域 ,你可以从 (根据定义,这是一个空集)出发,经过不超过 次操作到达每个给出的有向邻域,可以使用的操作有:
- 从有向邻域 移动到 ,满足 ;
- 撤销一次 1 操作,即回到之前最后一次未撤销的 1 操作前的位置,并将这次 1 操作标为已撤销;
- 声明当前到达了有向邻域 ,满足当前所在邻域是 ;
其中操作 1 的代价为移动前后两个有向邻域的元素个数之差,操作 2 和 3 不计代价,要求操作 2 执行时必须存在未撤销的操作 1,操作 3 必须对每个 恰好各执行一次。
你需要保证操作的总代价不超过 。
输入格式
第一行两个整数 ;
接下来一行,共 个整数,依次表示编号为 的顶点的父亲 ,保证父亲的编号小于孩子的编号;
接下来的 行中,第 行两个整数 ,表示给出的每个有向邻域。
输出格式
第一行一个整数 ,表示你进行的操作次数;
接下来 行,依次表示每个操作;
操作 1 表示为 ;
操作 2 表示为 ;
操作 3 表示为 。
8 4
1 1 1 2 2 2 5
2 1
1 1
6 0
1 2
16
1 2 1
3 1
2
1 6 0
3 3
2
1 1 1
1 1 1
3 2
2
1 1 2
1 1 2
3 4
2
2
2
数据范围与提示
对于 的数据,满足 ,,,所有数值为整数。