atcoder#AGC025E. [AGC025E] Walking on a Tree

[AGC025E] Walking on a Tree

配点 : 15001500

問題文

高橋君は木上を散歩するのが大好きです。 高橋君が散歩をする木は NN 頂点からなり、各頂点には 11 から NN の番号が割り振られています。 また、N1N-1 本の辺のうち、ii 本目の辺は頂点 aia_i と頂点 bib_i を結んでいます。

高橋君は MM 回の散歩の予定を組みました。ii 回目の散歩は以下のようにして行う予定です。

  • 22 つの頂点 ui,viu_i,v_i が決まっている。
  • 高橋君は頂点 uiu_i から頂点 viv_i、または、頂点 viv_i から頂点 uiu_i に向かって、同じ辺は一度しか通らないように移動する。

また、ii 回目の散歩で得られる 楽しさ は以下のように定義されています。

  • ii 回目の散歩で通った辺であって、以下のいずれかの条件を満たすものの個数- 今回の散歩で初めて通った辺
    • 今まで通ったことがあっても、今回とは逆向きでしか通っていなかった辺
  • 今回の散歩で初めて通った辺
  • 今まで通ったことがあっても、今回とは逆向きでしか通っていなかった辺

高橋君は MM 回の散歩の楽しさの合計が最大になるように、各散歩の向きを決めたいです。 そこで、高橋君が得られる楽しさの合計の最大値と、実際に楽しさの合計が最大となる各散歩の向きの定め方の一例を求めてください。

制約

  • 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
  • 入力で与えられるグラフは木である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM

a1a_1 b1b_1

:

aN1a_{N-1} bN1b_{N-1}

u1u_1 v1v_1

:

uMu_M vMv_M

出力

高橋君が得られる楽しさの合計の最大値 TT と、実際に楽しさの合計が最大となる各散歩の向きの定め方の一例を、以下の形式に従って出力せよ。

TT

u1u'_1 v1v'_1

:

uMu'_M vMv'_M

ただし、(uiu'_i,viv'_i) は (uiu_i,viv_i) または (viv_i,uiu_i) であり、ii 回目の散歩で uiu'_i から viv'_i に向かって移動することを表している。

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

上のように散歩の向きを定めると、各散歩で 22 ずつ楽しさを得ることができ、合計の楽しさが 66 になります。

5 3
1 2
1 3
3 4
3 5
2 4
3 5
1 5
6
2 4
3 5
5 1
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