CF403E.Two Rooted Trees

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

你有两棵有根树,每棵树都有 nn 个结点。不妨将这两棵树上的点都用 11 到 nn 之间的整数编号。每棵树的根结点都是 11。第一棵树上的边都是蓝色,第二课树上的边都是红色。我们也称第一棵树是蓝色的,第二棵树是红色的。

对于一条边 (p,q)(p, q),当以下条件满足时,我们认为 (x,y)(x, y) 是一条坏边:

  • 边 (x,y)(x, y) 的颜色与 (p,q)(p, q) 的颜色不同。
  • 考虑与 (p,q)(p, q) 颜色相同的那棵树。在 xx 和 yy 中有且仅有其中一个点同时位于 pp 和 qq 的子树。(注意这里的 x,yx, y 和上面的 (x,y)(x, y) 不在同一棵树上)

在本题中,你的任务是模拟下述过程。该过程包含几个阶段:

  • 在每个阶段,有且仅有一种颜色的边可以被删除。
  • 在第 11 个阶段,有且仅有一条蓝色的边被删除。
  • 假设在第 ii 个阶段我们删除了 (u1,v1),(u2,v2),...,(uk,vk)(u_1, v_1), (u_2, v_2), ..., (u_k, v_k)。在第 i+1i+1 个阶段,我们会先删除所有对于 (u1,v1)(u_1, v_1) 的没有删除的坏边,然后删除所有对于 (u2,v2)(u_2, v_2) 的没有删除的坏边,然后一直进行下去,直到 (uk,vk)(u_k, v_k) 结束。

对于每一个阶段,输出哪些边会被删除。注意,对于一条边的坏边的定义,我们总是只考虑初始的那两棵树。

输入格式

第一行包含一个整数 nn (2≤n≤2×105)(2 \leq n \leq 2 \times 10^5),表示一棵树上点的个数。

接下来一行包含 n−1n-1 个正整数 a2,a3,...,an(1≤ai≤n;ai≤i)a_2, a_3, ..., a_n (1 \leq a_i \leq n; a_i \leq i),用来描述第一棵树。其中,aia_i 表示第一棵树上存在一条边连接了 aia_i 和 ii。

接下来一行包含 n−1n-1 个正整数 b2,b3,...,bn(1≤bi≤n;bi≤i)b_2, b_3, ..., b_n (1 \leq b_i \leq n; b_i \leq i),用来描述第二棵树。其中,aia_i 表示第二棵树上存在一条边连接了 bib_i 和 ii。

接下来一行包含一个整数 idxidx,表示第一阶段所删除的蓝色边的编号。假设每棵树的边都按照输入顺序从 11 到 n−1n-1 编号。

输出格式

对于每一个删边的阶段,输出两行。如果在一个删除蓝色边的阶段,那么第一行输出一个单词 Blue,否则输出 Red。第二行按升序输出,此阶段被删除的所有边的编号。

样例解释

  • 首先删除蓝色 33 号边:(1,4)(1, 4);
  • 在第一棵树上,只有 44 号点满足同时在 11 和 44 的子树上,所以第二棵树上所有与 44 相连的边全部被删除,也就是红色 11 号边:(2,4)(2, 4) 和红色 33 号边 (1,4)(1, 4);
  • 在第二棵树上,2,32, 3 号点满足同时在 22 和 44 的子树上,所以第一棵树上所有与 22 或 33 相连的边全部被删除,也就是蓝色 11 号边:(1.2)(1. 2) 和蓝色 22 号边 (1,3)(1, 3),至于满足同时在 11 和 44 子树上的点,由于已经被删除干净,所以不提;
  • 在第一棵树上,只有 22 号点满足同时在 11 和 22 的子树上,所以第二棵树上所有与 22 相连的边全部被删除,也就是红色 22 号边:(2.3)(2. 3) ;
  • 没有边可以删除,程序结束。

输入输出样例

  • 输入#1

    5
    1 1 1 1
    4 2 1 1
    3
    

    输出#1

    Blue
    3
    Red
    1 3
    Blue
    1 2
    Red
    2
    

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

首页