CFCF2195E.Idiot First Search

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

有一棵包含 n+1n+1 个结点的二叉树(nn 为奇数),结点编号为 0,1,,n0, 1, \ldots, n。每个结点上最多只能写一个字母,且一开始所有结点上都没有写任何东西。树的根结点是结点 00

在这棵树中,结点 00 是结点 11 的父亲,其余所有结点要么有 22 个孩子,要么没有孩子(叶子结点)。

Bob 迷路在树上的某个结点,希望通过到达结点 00 来离开这棵树。对大多数常人来说,这很简单。但不幸的是,Bob 是个“白痴”,于是他发明了一种新方式遍历这棵树,被称作“Idiot First Search”(白痴优先遍历)。

当 Bob 处于结点 vv1vn1 \le v \le n)时,他的移动方式如下:

  • 如果结点 vv 是叶子结点,Bob 始终移动到 vv 的父亲;否则,根据后续条件判断。
  • 如果结点 vv 上没有任何字母,Bob 在 vv 上写下 ‘L’,然后移动到 vv 的左孩子;
  • 如果 vv 上写着 ‘L’,Bob 将其覆盖为 ‘R’,然后移动到 vv 的右孩子;
  • 如果 vv 上写着 ‘R’,Bob 擦掉这个字母,然后移动到 vv 的父节点。

Bob 每移动到相邻的下一个点正好花费 11 秒,因此执行 xx 步就花去 xx 秒。

已经证明,不论 Bob 起始于哪个结点,他都能在有限(可能非常大的)时间内到达结点 00。我们不知道是谁证明的,反正肯定不是 Bob,但可以确信这一点。

对于每个点 k=1,2,,nk=1,2,\ldots,n,请计算如果 Bob 从结点 kk 出发,到达结点 00 所需的总用时(单位:秒)。由于答案可能很大,只需输出对 109+710^9+7 取模的结果。

输入格式

每组数据包含多组测试数据。第一行为测试组数 tt1t1041 \le t \le 10^4)。每组测试数据描述如下:

每组测试数据的第一行包含一个正整数 nn1n3000011 \le n \le 300001,且 nn 为奇数)。

接下来 nn 行,每行两个整数 lil_irir_i,表示第 ii 个结点的左、右孩子(0li,rin0 \le l_i, r_i \le n)。

若结点 ii 没有孩子,则给出 li=ri=0l_i=r_i=0。否则,lil_irir_i 分别表示结点 ii 的左、右孩子。

保证每组数据表示的都是合法的二叉树,且满足题目所述所有条件。

保证所有测试数据中 nn 的总和不超过 300001300001

输出格式

对于每组测试数据,输出 nn 个用空格分隔的整数 τ1,τ2,,τn\tau_1, \tau_2, \ldots, \tau_n,其中 τk\tau_k 表示如果 Bob 从结点 kk 出发,到达结点 00 总共需要的时间,对 109+710^9+7 取模。

输入输出样例

  • 输入#1

    3
    1
    0 0
    5
    2 3
    0 0
    4 5
    0 0
    0 0
    7
    2 3
    4 5
    0 0
    6 7
    0 0
    0 0
    0 0

    输出#1

    1
    9 10 14 15 15
    13 22 14 27 23 28 28

说明/提示

对于第一组样例,只有两个结点:结点 00 和结点 11。Bob 从结点 11 走到结点 00 仅需 11 秒。

对于第二组样例,树的结构如下:

Bob 从结点 33 出发到达结点 00 需要 1414 秒,具体过程如下:

3L4X3R5X3X1L2X1R3L4X3R5X3X1X03 \xrightarrow{\mathtt{L}} 4 \xrightarrow{\mathtt{X}} 3 \xrightarrow{\mathtt{R}} 5 \xrightarrow{\mathtt{X}} 3 \xrightarrow{\mathtt{X}} 1 \xrightarrow{\mathtt{L}} 2 \xrightarrow{\mathtt{X}} 1 \xrightarrow{\mathtt{R}} 3 \xrightarrow{\mathtt{L}} 4 \xrightarrow{\mathtt{X}} 3 \xrightarrow{\mathtt{R}} 5 \xrightarrow{\mathtt{X}} 3 \xrightarrow{\mathtt{X}} 1 \xrightarrow{\mathtt{X}} 0

上方箭头边的字母表示 Bob 移动前结点上的状态,其中 X\mathtt{X} 表示未写任何内容。

首页