#3630. Ranges on Tree

0

Ranges on Tree

Ranges on Tree

题目描述

给定一棵有 NN 个顶点的有根树。根为顶点 11。
对于每个 i=1,2,…,N−1i = 1, 2, \ldots, N-1,第 ii 条边连接顶点 uiu_i 和顶点 viv_i。 对于每个 i=1,2,…,Ni = 1, 2, \ldots, N,令 SiS_i 表示以顶点 ii 为根的子树中所有顶点的集合。(每个顶点属于以其自身为根的子树,也就是说 i∈Sii \in S_i。) 此外,对于整数 ll 和 rr,令 [l,r][l, r] 表示所有介于 ll 和 rr 之间的整数的集合,也就是 [l,r]={l,l+1,l+2,…,r}[l, r] = \lbrace l, l+1, l+2, \ldots, r \rbrace。 考虑一个由 NN 对整数构成的序列 $\big((L_1, R_1), (L_2, R_2), \ldots, (L_N, R_N)\big)$,满足下列条件。

1≤Li≤Ri1 \leq L_i \leq R_i 对于每个整数 ii 且 1≤i≤N1 \leq i \leq N 成立。 对于每一对整数 (i,j)(i, j) 且 1≤i,j≤N1 \leq i, j \leq N,下面成立。 如果 Si⊆SjS_i \subseteq S_j 则 [Li,Ri]⊆[Lj,Rj][L_i, R_i] \subseteq [L_j, R_j] 如果 Si∩Sj=∅S_i \cap S_j = \emptyset 则 [Li,Ri]∩[Lj,Rj]=∅[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$(所使用整数的最大值)最小化的序列。(如果存在多个这样的序列,你可以输出其中任意一个。)

输入格式

输入按下列格式从标准输入给出: NN u1u_1 v1v_1 u2u_2 v2v_2 ⋮\vdots uN−1u_{N-1} vN−1v_{N-1}

输出格式

输出 NN 行,格式如下。也就是说,对于每个 i=1,2,…,Ni = 1, 2, \ldots, N,第 ii 行应包含用空格分隔的 LiL_i 和 RiR_i。 L1L_1 R1R_1 L2L_2 R2R_2 ⋮\vdots LNL_N RNR_N

3
2 1
3 1
1 2
2 2
1 1
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

提示

2≤N≤2×1052 \leq N \leq 2 \times 10^5 1≤ui,vi≤N1 \leq u_i, v_i \leq N 输入中的所有数值均为整数。 给定的图是树。$(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$ 是可能的最小值。

标签: AtCoder|abc240E

来源

AtCoder|abc240E