atcoder#ARC111D. [ARC111D] Orientation

[ARC111D] Orientation

配点 : 600600

問題文

NN 頂点 MM 辺の単純な無向グラフが与えられます。頂点には 1,,N1, \cdots, N の番号がついています。ii 番目の辺は頂点 aia_i, bib_i を繋いでいます。 また、正整数列 c1,c2,,cNc_1, c_2, \cdots, c_N も与えられます。

このグラフを、次の条件を満たすように有向グラフに変換してください。つまり、各 ii について無向辺 (ai,bi)(a_i, b_i) を削除し、有向辺 aibia_i \to b_ibiaib_i \to a_i のどちらか 11 つを張ってください。

  • 全ての i=1,2,,Ni = 1, 2, \cdots, N について、頂点 ii から(有向辺を好きな回数使うことで)到達可能な頂点数がちょうど cic_i 個。なお、頂点 ii 自身も 11 個と数える。

なお、この問題では、解が存在するような入力のみが与えられます。

制約

  • 1N1001 \leq N \leq 100
  • 0MN(N1)20 \leq M \leq \frac{N(N - 1)}{2}
  • 1ai,biN1 \leq a_i, b_i \leq N
  • 与えられるグラフに自己ループや多重辺は存在しない
  • 1ciN1 \leq c_i \leq N
  • 必ず題意を満たす解が存在する

入力

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

NN MM

a1a_1 b1b_1

::

aMa_M bMb_M

c1c_1 c2c_2 ...... cNc_N

出力

MM 行出力せよ。

ii 行目には、ii 番目の辺について aibia_i \to b_i に辺を張りたい場合 ->aibia_i \gets b_i に辺を張りたい場合 <- を出力せよ。

解が複数存在する場合、どれを出力しても構わない。

3 3
1 2
2 3
3 1
3 3 3
->
->
->

長さ 33 のサイクルでは、どの頂点からも全ての頂点に到達できます。

3 2
1 2
2 3
1 2 3
<-
<-
6 3
1 2
4 3
5 6
1 2 1 2 2 1
<-
->
->

グラフは非連結のこともあります。