TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  信息发布  解题排行
  • 首页
  • 题库
  • P8784
  • 题目
  • P8784[模拟赛20211101]跑步训练
    限制 : 时间限制 : - MS   空间限制 : 524288 KB
    评测说明 : 3s,512MB
    问题描述

    在一块场地上一些运动员在训练跑步。场地是由 \(n\) 个休息室和 \(n - 1\) 条双向道路组成的树形结构。每条道路连接两个休息室,道路的两侧都是墙壁。

    \(m\) 个运动员同时在这块场地上训练跑步。第 \(i\) 个运动员从第 \(a_i\) 个休息室出发,出发时面朝第 \(b_i\) 个休息室。为了避免迷路,运动员在场地内训练时,总是右手贴着墙跑步。例如,下图是场地的俯视图,如果运动员从 \(1\) 号休息室出发,且出发时面朝 \(3\) 号休息室,那么他将会沿着 \(1,3,5,3,6,3,1,4,1,2,1,\dots\) 的路线循环跑步。

    根据教练的安排, 所有运动员每天必须刚好跑 \(p\) 条道路。每天跑步结束后,每个运动员都会将自己跑过的最后一条道路封堵,使双向都无法通行。如果有多个运动员跑过的最后一条道路相同,则这条道路会被其中编号最小的一个运动员封堵。到了下一天,每个运动员会接着前一天跑步结束时所在的休息室以及朝向,出发再跑 \(p\) 条道路。

    道路被封堵会对后续的跑步路线产生影响。每个运动员都会在若干天后被困在某个休息室中,即这个休息室的所有道路都已经被封堵。一个运动员被困住之后,以后每天都不再跑步。

    现在请你写一个程序计算:每个运动员是在哪一天结束后被困在了哪一个休息室中?每条道路在第几天被哪个运动员封堵?

    输入格式

    第一行三个整数 \(n,m,p\)

    为了方便描述树的平面形态,本题采用有根树的方式输入。根节点是第 \(1\) 个休息室,位于场地的最北方。输入数据的第 \(2\) 行包含 \(n - 1\) 个数 \(f_2,f_3,\cdots,f_n\) ,表示 \(2\sim n\) 的父亲编号。每个节点的父亲都在自己的北方(可能偏东或偏西),兄弟关系的节点按照编号递增的顺序自西向东排列。

    接下来 \(m\) 行,每行两个整数 \(a_i,b_i\) ,表示第 \(i\) 个运动员第一天出发时所在的休息室和朝向。保证休息室 \(a_i,b_i\) 有一条道路直接相连。

    输出格式

    输出第 \(1\sim m\) 行,每行两个整数 \(x_i,y_i\) ,表示第 \(i(=1,2,\cdots,n)\) 个运动员在第 \(x_i\) 天结束后被困在了第 \(y_i\) 个休息室中。

    接下来 \(n-1\) 行,每行两个数 \(z_i,w_i\) ,表示第 \(i(=2,3,\cdots,n)\) 个休息室与父亲之间的道路时在第 \(z_i\) 天被第 \(w_i\) 个运动员封堵。如果一条道路一直不会被封堵则 \(z_i=w_i=0\)

    样例输入 1

    6 2 3
    1 1 1 3 3
    2 1
    4 1

    样例输出 1

    1 5
    4 3
    1 2
    4 2
    3 2
    1 1
    2 2

    样例输入 2

    10 3 5
    1 2 2 2 1 6 1 1 8
    1 6
    9 1
    10 8

    样例输出 2

    2 10
    1 4
    2 3
    1 3
    2 3
    1 2
    0 0
    0 0
    0 0
    1 1
    0 0
    2 1

    提示

    样例1解释

    训练场地的地形,见“问题描述”中的插图

    • \(1\) 天,运动员 \(1\) 的路线是 \(2\to1\to3\to5\) ,运动员 \(2\) 的路线是 \(4\to1\to2\to1\)
      训练结束后,运动员 \(1\) 封堵休息室 \(3,5\) 之间的道路,运动员 \(2\) 封堵休息室 \(2,1\) 之间的道路;
      从此,运动员 \(1\) 被困在休息室 \(5\)
    • \(2\) 天,运动员 \(2\) 的路线是 \(1\to3\to6\to3\) ,然后封堵休息室 \(6,3\) 之间的道路。
    • \(3\) 天,运动员 \(2\) 的路线是 \(3\to1\to4\to1\) ,然后封堵休息室 \(4,1\) 之间的道路。
    • \(4\) 天,运动员 \(2\) 的路线是 \(1\to3\to1\to3\) ,然后封堵休息室 \(1,3\) 之间的道路;
      从此,运动员 \(2\) 被困在休息室 \(3\)

    样例2解释

    训练场地如图所示

    • 运动员 \(1\)
      \(1\) 天的路线是 \(1\to6\to7\to6\to1\to8\)
      \(2\) 天的路线是 \(8\to10\to8\to10\to8\to10\)
    • 运动员 \(2\)
      \(1\) 天的路线是 \(9\to1\to2\to3\to2\to4\)
    • 运动员 \(3\)
      \(1\) 天的路线是 \(10\to8\to1\to9\to1\to2\)
      \(2\) 天的路线是 \(2\to3\to2\to5\to2\to3\)

    数据范围

    每组测试数据范围如下表所示

    • 性质 \(\mathrm{A}\) :每个休息室的父亲 \(f_i=1\) ,所有运动员出发时的休息室 \(a_i=1\) ,且 \(p\) 是偶数。
    • 性质 \(\mathrm{B}\) :每个休息室的父亲 \(f_i =i-1\)

    所有测试数据:
    \(1\leq n\leq 250\;000\)
    \(0\leq m\leq 50\;000\)
    \(1\leq p\leq 10^9\)
    \(1\leq f_i\leq i-1\)
    \(1\leq a_i,b_i\leq n\)
    保证休息室 \(a_i,b_i\) 有一条道路直接相连