atcoder#KEYENCE2020E. Bichromization

Bichromization

配点 : 900900

問題文

NN 頂点 MM 辺の連結な無向グラフがあります。 このグラフの辺 ii (1iM1 \leq i \leq M) は頂点 UiU_i と頂点 ViV_i を双方向に結んでいます。 また、NN 個の整数 D1,D2,...,DND_1, D_2, ..., D_N が与えられます。

このグラフの各頂点に白または黒の色を割り当て、さらに 各辺に 11 以上 10910^9 以下の整数の重みを割り当てる方法であって、以下の条件を満たすものが存在するかどうか判定してください。 さらに、存在する場合、そのような割り当てをひとつ求めてください。

  • 白および黒が割り当てられた頂点がそれぞれ少なくとも 11 個以上存在する。
  • 各頂点 vv (1vN1 \leq v \leq N) に対して以下の条件が成り立つ。- 頂点 vv からグラフの辺を通って頂点 vv と異なる色が割り当てられた頂点に移動する際にかかる最小のコストはちょうど DvD_v である。
  • 頂点 vv からグラフの辺を通って頂点 vv と異なる色が割り当てられた頂点に移動する際にかかる最小のコストはちょうど DvD_v である。

なお、グラフ上の移動にかかるコストとは、 移動の際に通る辺の重みの和のことです。

制約

  • 2N100,0002 \leq N \leq 100,000
  • 1M200,0001 \leq M \leq 200,000
  • 1Di1091 \leq D_i \leq 10^9
  • 1Ui,ViN1 \leq U_i, V_i \leq N
  • 与えられるグラフは連結であり、自己ループや多重辺を持たない。
  • 入力値はすべて整数である。

入力

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

NN MM

D1D_1 D2D_2 ...... DND_N

U1U_1 V1V_1

U2U_2 V2V_2

\vdots

UMU_M VMV_M

出力

割り当てが不可能である場合、-1 と一行に出力せよ。

可能である場合、 割り当て方をひとつ、 以下の形式で出力せよ。

SS

C1C_1

C2C_2

\vdots

CMC_M

ただし、

  • 11 行目の出力 SS は長さ NN の文字列とせよ。 その ii 番目 (1iN1 \leq i \leq N) の文字は、頂点 ii に白色を割り当てる場合は W とし、黒色を割り当てる場合は B とせよ。
  • i+1i + 1 行目 (1iM1 \leq i \leq M) の出力 CiC_i は辺 ii に割り当てる重みとせよ(整数として出力すること)。
5 5
3 4 3 5 7
1 2
1 3
3 2
4 2
4 5
BWWBB
4
3
1
5
2

出力例のように色と重みを割り当てた場合、たとえば頂点 55 からグラフの辺を通って頂点 55 と異なる色が割り当てられた頂点に最小のコストで移動するには、 頂点 55 \to 頂点 44 \to 頂点 22 と移動すればよく、この移動のコストは 77 となるので、条件を満たします。 他の頂点についても条件を満たすことが確かめられます。

5 7
1 2 3 4 5
1 2
1 3
1 4
2 3
2 5
3 5
4 5
-1
4 6
1 1 1 1
1 2
1 3
1 4
2 3
2 4
3 4
BBBW
1
1
1
2
1
1