atcoder#ABC277E. [ABC277E] Crystal Switches

[ABC277E] Crystal Switches

配点 : 500500

問題文

NN 個の頂点と MM 本の辺からなる無向グラフが与えられます。 i=1,2,,Mi = 1, 2, \ldots, M について、ii 番目の辺は頂点 uiu_i と頂点 viv_i を結ぶ無向辺であり、 ai=1a_i = 1 ならばはじめは通行可能、ai=0a_i = 0 ならばはじめは通行不能です。 また、頂点 s1s_1 、頂点 s2s_2\ldots 、頂点 sKs_KKK 個の頂点にはスイッチがあります。

高橋君は、はじめ頂点 11 におり、「下記の移動スイッチを押す22 つの行動のどちらかを行うこと」を好きなだけ繰り返します。

  • 移動 : いまいる頂点と通行可能な辺を介して隣接する頂点を 11 つ選び、その頂点に移動する。
  • スイッチを押す : いまいる頂点にスイッチがあるならば、そのスイッチを押す。その結果、グラフ上のすべての辺の通行可能・通行不能の状態が反転する。すなわち、通行可能である辺は通行不能に、通行不能である辺は通行可能に変化する。

高橋君が頂点 NN に到達することが可能かどうかを判定し、可能な場合は頂点 NN に到達するまでに行う移動の回数としてあり得る最小値を出力してください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1M2×1051 \leq M \leq 2 \times 10^5
  • 0KN0 \leq K \leq N
  • 1ui,viN1 \leq u_i, v_i \leq N
  • uiviu_i \neq v_i
  • ai{0,1}a_i \in \lbrace 0, 1\rbrace
  • 1s1<s2<<sKN1 \leq s_1 \lt s_2 \lt \cdots \lt s_K \leq N
  • 入力はすべて整数

入力

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

NN MM KK

u1u_1 v1v_1 a1a_1

u2u_2 v2v_2 a2a_2

\vdots

uMu_M vMv_M aMa_M

s1s_1 s2s_2 \ldots sKs_K

出力

高橋君が頂点 NN に到達することが不可能な場合は 1-1 を、 可能な場合は頂点 NN に到達するまでに行う移動の回数としてあり得る最小値を出力せよ。

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

高橋君は、下記の手順で行動することで頂点 NN に到達できます。

  • 頂点 11 から頂点 22 に移動する。
  • 頂点 22 から頂点 33 に移動する。
  • 頂点 33 にあるスイッチを押す。これによって、グラフ上のすべての辺の通行可能・通行不能の状態が反転する。
  • 頂点 33 から頂点 11 に移動する。
  • 頂点 11 から頂点 44 に移動する。
  • 頂点 44 にあるスイッチを押す。これによって、グラフ上のすべての辺の通行可能・通行不能の状態が再び反転する。
  • 頂点 44 から頂点 55 に移動する。

この手順における移動の回数は 55 回であり、これが考えられる最小の回数です。

4 4 2
4 3 0
1 2 1
1 2 0
2 1 1
2 4
-1

与えられるグラフは、連結でないことや、多重辺を含むことがあります。 この入力例では、高橋君はどのように行動しても頂点 NN に到達することはできないので、1-1 を出力します。