#AGC025E. [AGC025E] Walking on a Tree

[AGC025E] Walking on a Tree

题目描述

高橋君は木上を散歩するのが大好きです。 高橋君が散歩をする木は N N 頂点からなり、各頂点には 1 1 から N N の番号が割り振られています。 また、N1 N-1 本の辺のうち、i i 本目の辺は頂点 ai a_i と頂点 bi b_i を結んでいます。

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

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

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

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

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

输入格式

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

N N M M a1 a_1 b1 b_1 : aN1 a_{N-1} bN1 b_{N-1} u1 u_1 v1 v_1 : uM u_M vM v_M

输出格式

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

T T u1 u'_1 v1 v'_1 : uM u'_M vM v'_M

ただし、(ui u'_i ,vi v'_i ) は (ui u_i ,vi v_i ) または (vi v_i ,ui u_i ) であり、i i 回目の散歩で ui u'_i から vi v'_i に向かって移動することを表している。

题目大意

给定一棵 nn 个节点的树和 mm 条树上的路径, 要求为每一条路径定向.

ii 条树边 (ai,bi)(a_i, b_i) 的权值为满足下述条件的条数:

  • 被某条路径沿 aibia_i\to b_i 方向经过.
  • 被某条路径沿 biaib_i\to a_i 方向经过.

求最大权值和并给出 mm 条路经的定向方案, 多组方案合法输出任意一组即可.

n,m2000n,m\leqslant 2000

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

提示

制約

  • 1  N,M  2000 1\ ≦\ N,M\ ≦\ 2000
  • 1  ai , bi  N 1\ ≦\ a_i\ ,\ b_i\ ≦\ N
  • 1  ui , vi  N 1\ ≦\ u_i\ ,\ v_i\ ≦\ N
  • ai  bi a_i\ \neq\ b_i
  • ui  vi u_i\ \neq\ v_i
  • 入力で与えられるグラフは木である。

Sample Explanation 1

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