#AT2081. E - Ranges on Tree

E - Ranges on Tree

当前没有测试数据。

E - 树上范围

分数:500 分

问题描述

给定一个包含 $N$ 个顶点的有根树。根节点为顶点 $1$。
对于每个 $i = 1, 2, \ldots, N-1$,第 $i$ 条边连接顶点 $u_i$ 和顶点 $v_i$。

对于每个 $i = 1, 2, \ldots, N$,令 $S_i$ 表示以顶点 $i$ 为根的子树中的所有顶点的集合。(每个顶点都在以自己为根的子树中,即 $i \in S_i$。)

此外,对于整数 $l$ 和 $r$,令 $[l, r]$ 表示所有介于 $l$ 和 $r$ 之间(包括 $l$ 和 $r$)的整数的集合,即 $[l, r] = \lbrace l, l+1, l+2, \ldots, r \rbrace$。

考虑满足以下条件的 $N$ 对整数组成的序列 $\big((L_1, R_1), (L_2, R_2), \ldots, (L_N, R_N)\big)$。

  • 对于每个整数 $i$,满足 $1 \leq L_i \leq R_i$。
  • 对于每对整数 $(i, j)$,满足 $1 \leq i, j \leq N$,有以下条件成立:
    • 如果 $S_i \subseteq S_j$,则 $[L_i, R_i] \subseteq [L_j, R_j]$。
    • 如果 $S_i \cap S_j = \emptyset$,则 $[L_i, R_i] \cap [L_j, R_j] = \emptyset$。

可以证明至少存在一个满足条件的序列 $\big((L_1, R_1), (L_2, R_2), \ldots, (L_N, R_N)\big)$。 在所有满足条件的序列中,输出使得 $\max \lbrace L_1, L_2, \ldots, L_N, R_1, R_2, \ldots, R_N \rbrace$ 尽可能小的序列。(如果有多个满足条件的序列,你可以输出任意一个。)

约束

  • $2 \leq N \leq 2 \times 10^5$
  • $1 \leq u_i, v_i \leq N$
  • 输入中的所有值都是整数。
  • 给定的图是一个树。

输入

从标准输入读入数据,格式如下:

NN

u1u_1 v1v_1

u2u_2 v2v_2

\vdots

uN1u_{N-1} vN1v_{N-1}

输出

按照下面的格式输出 $N$ 行。也就是说,对于每个 $i = 1, 2, \ldots, N$,第 $i$ 行应该包含以空格分隔的 $L_i$ 和 $R_i$。

``` $L_1$ $R_1$ $L_2$ $R_2$ $\vdots$ $L_N$ $R_N$ ```
3
2 1
3 1
1 2
2 2
1 1

满足条件的序列是 $(L_1, R_1) = (1, 2), (L_2, R_2) = (2, 2), (L_3, R_3) = (1, 1)$。
可以看到,满足 $[L_2, R_2] \subseteq [L_1, R_1], [L_3, R_3] \subseteq [L_1, R_1], [L_2, R_2] \cap [L_3, R_3] = \emptyset$。
此外,$\max \lbrace L_1, L_2, L_3, R_1, R_2, R_3 \rbrace = 2$ 是可能的最小值。


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

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