atcoder#ABC239G. [ABC239G] Builder Takahashi

[ABC239G] Builder Takahashi

配点 : 600600

問題文

NN 頂点 MM 辺の単純連結無向グラフがあります。 頂点には頂点 11, 頂点 22, \dots, 頂点 NN と番号が振られています。 辺には 辺 11, 辺 22, \dots, 辺 MM と番号が振られています。辺 ii は頂点 aia_i と頂点 bib_i を双方向に結んでいます。また、頂点 11 と頂点 NN を直接結ぶ辺は存在しません。 各頂点の状態は「何もない頂点」か「壁がある頂点」のいずれかです。はじめ、全ての頂点は何もない頂点です。

青木君は頂点 11 を出発して、グラフ上を辺に沿って移動して頂点 NN へ行こうとしています。ただし、壁がある頂点への移動を行うことはできません。

高橋君は、青木君が移動を開始する前にいくつかの頂点を選んで壁を建てることで、青木君がどのように移動しても頂点 NN へ行くことができないようにすることにしました。 高橋君が頂点 ii に壁を建てるには cic_i 円を払う必要があります。また、頂点 1 および頂点 N には壁を建てられません。

高橋君が条件を満たすように壁を建てるときに最小で何円払う必要があるでしょうか。また、その時の壁の立て方を 11 つ出力してください。

制約

  • 3N1003 \leq N \leq 100
  • N1MN(N1)21N - 1 \leq M \leq \frac{N(N-1)}{2} - 1
  • 1ai<biN1 \leq a_i \lt b_i \leq N (1iM)(1 \leq i \leq M)
  • (ai,bi)(1,N)(a_i, b_i) \neq (1, N)
  • 与えられるグラフは単純かつ連結である。
  • 1ci1091 \leq c_{i} \leq 10^9 (2iN1)(2 \leq i \leq N-1)
  • c1=cN=0c_1 = c_N = 0
  • 入力はすべて整数である。

入力

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

NN MM

a1a_1 b1b_1

a2a_2 b2b_2

\vdots

aMa_M bMb_M

c1c_1 c2c_2 \dots cNc_N

出力

以下の形式に従って出力せよ。ここで、C,k,piC,k,p_i は次に定める通りとする。

  • CC は高橋君が支払う金額
  • kk は高橋君が壁を建てる頂点の個数
  • (p1,p2,,pk)(p_1,p_2,\dots,p_k) は高橋君が壁を建てる頂点からなる列

CC

kk

p1p_1 p2p_2 \dots pkp_k

最小の金額で条件を満たす建て方が複数存在する場合はどれを出力してもよい。

5 5
1 2
2 3
3 5
2 4
4 5
0 8 3 4 0
7
2
3 4

高橋君が 3+4=73 + 4 = 7 円を払って頂点 33, 頂点 44 に壁を建てると青木君は頂点 11 から頂点 55 へ行くことができなくなります。 これより少ない金額で条件を満たすことはできないので 77 円が答えとなります。

3 2
1 2
2 3
0 1 0
1
1
2
5 9
1 2
1 3
1 4
2 3
2 4
2 5
3 4
3 5
4 5
0 1000000000 1000000000 1000000000 0
3000000000
3
2 3 4