atcoder#ABC289E. [ABC289E] Swap Places

[ABC289E] Swap Places

配点 : 500500

問題文

頂点に 11 から NN までの、辺に 11 から MM までの番号がついた NN 頂点 MM 辺の単純無向グラフがあります。 辺 ii は頂点 uiu_i と頂点 viv_i を結んでいます。 また、全ての頂点は赤か青のいずれか一方で塗られています。頂点 ii の色は CiC_i で表されて、CiC_i00 ならば頂点 ii は赤く、11 ならば頂点 ii は青く塗られています。

今、高橋君が頂点 11 に、青木君が頂点 NN にいます。 2 人は次の行動を 00 回以上好きな回数繰り返します。

  • 2 人が同時に、今いる頂点に隣接している頂点のいずれか 1 個に移動する。 ただし、高橋君の移動先の頂点の色と、青木君の移動先の頂点の色は異なる必要がある。

上記の行動を繰り返すことで、高橋君が頂点 NN に、青木君が頂点 11 にいる状態にできますか? 可能である場合は必要な行動回数の最小値を答えてください。不可能である場合は -1 を出力してください。

入力のはじめに TT が与えられるので、TT 個のテストケースについて問題を解いてください。

制約

  • 1T10001 \leq T \leq 1000
  • 2N20002 \leq N \leq 2000
  • 1Mmin(N(N1)2,2000)1 \leq M \leq \min(\frac{N(N-1)}{2}, 2000)
  • Ci{0,1}C_i \in \lbrace 0, 1 \rbrace
  • 1ui,viN1 \leq u_i, v_i \leq N
  • 入力で与えられるグラフは単純
  • 入力される値は全て整数
  • 全てのテストケースに対する NN の総和は 20002000 を超えない。
  • 全てのテストケースに対する MM の総和は 20002000 を超えない。

入力

入力は以下の形式で標準入力から与えられる。ここで testi\text{test}_iii 番目のテストケースを意味する。

TT

test1\text{test}_1

test2\text{test}_2

\vdots

testT\text{test}_T

各テストケースは以下の形式で与えられる。

NN MM

C1C_1 C2C_2 \dots CNC_N

u1u_1 v1v_1

u2u_2 v2v_2

\vdots

uMu_M vMv_M

出力

TT 行出力せよ。ii 行目には ii 番目のテストケースに対する答えを出力せよ。 各テストケースでは、高橋君が頂点 NN に、青木君が頂点 11 にいる状態にできる場合は必要な行動回数の最小値を、できない場合は -1 を出力せよ。

3
4 4
0 1 0 1
1 2
2 3
1 3
2 4
3 3
0 1 0
1 2
2 3
1 3
6 6
0 0 1 1 0 1
1 2
2 6
3 6
4 6
4 5
2 4
3
-1
3

1 番目のテストケースでは、高橋君と青木君は以下のように行動することで、 33 回の行動で目的の状態を達成することができて、これが最小です。

  • 高橋君が頂点 33 に、青木君が頂点 22 に移動する。
  • 高橋君が頂点 22 に、青木君が頂点 33 に移動する。
  • 高橋君が頂点 44 に、青木君が頂点 11 に移動する。

ここで、11 回目の移動で高橋君と青木君がともに頂点 22 に移動することはできないのに注意してください。(なぜならば、高橋君の移動先の頂点の色と青木君の移動先の頂点の色は異なる必要があるからです。)

2 番目のテストケースでは、2 人はどのように行動しても目的の状態を達成することはできません。