#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$
- 输入中的所有值都是整数。
- 给定的图是一个树。
输入
从标准输入读入数据,格式如下:
输出
按照下面的格式输出 $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