#ATagc025e. [AGC025E] Walking on a Tree

[AGC025E] Walking on a Tree

题目描述

高桥君非常喜欢在树上散步。高桥君散步的树由 NN 个顶点组成,每个顶点被编号为 11NN。此外,N1N-1 条边中的第 ii 条边连接顶点 aia_i 和顶点 bib_i

高桥君计划进行 MM 次散步。第 ii 次散步将按以下方式进行:

  • 确定两个顶点 uiu_iviv_i
  • 高桥君将从顶点 uiu_i 移动到顶点 viv_i,或者从顶点 viv_i 移动到顶点 uiu_i,且同一条边不会被重复经过。

此外,第 ii 次散步的乐趣定义如下:

  • 在第 ii 次散步中经过的边中,满足以下任一条件的边的数量:
    • 本次散步中首次经过的边;
    • 之前曾经经过但仅以相反方向经过的边。

高桥君希望通过为每次散步选择方向,使得 MM 次散步的总乐趣最大化。因此,请计算高桥君能够获得的最大总乐趣,并给出一个实际使总乐趣最大的散步方向设定示例。

输入格式

输入通过标准输入给出,格式如下:

NN MM
a1a_1 b1b_1
\vdots
aN1a_{N-1} bN1b_{N-1}
u1u_1 v1v_1
\vdots
uMu_M vMv_M

输出格式

输出高桥君能够获得的最大总乐趣 TT,以及一个实际使总乐趣最大的散步方向设定示例,格式如下:

TT
u1u'_1 v1v'_1
\vdots
uMu'_M vMv'_M

其中,(ui,vi)(u'_i, v'_i)(ui,vi)(u_i, v_i)(vi,ui)(v_i, u_i),表示第 ii 次散步将从 uiu'_i 移动到 viv'_i

样例 1

输入

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

输出

6
2 3
3 4
4 2

样例 2

输入

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

输出

6
2 4
3 5
5 1

样例 3

输入

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

输出

9
2 4
6 3
5 6
4 5

说明/提示

约束条件

  • 1N,M20001 \leq N, M \leq 2000
  • 1ai,biN1 \leq a_i, b_i \leq N
  • 1ui,viN1 \leq u_i, v_i \leq N
  • aibia_i \neq b_i
  • uiviu_i \neq v_i
  • 输入给出的图是一棵树。

样例解释 #1

按照上述方式设定散步方向后,每次散步可以获得 22 点乐趣,总乐趣为 66

翻译由 DeepSeek V3 完成