atcoder#ABC237E. [ABC237E] Skiing

[ABC237E] Skiing

配点 : 500500

問題文

AtCoder スキー場には広場 11 、広場 22\ldots 、広場 NNNN 個の広場があり、広場 ii の標高は HiH_i です。 また、22 つの広場を双方向に結ぶ MM 本の坂があり、ii (1iM)(1 \leq i \leq M) 本目の坂は広場 UiU_i と広場 ViV_i を双方向に結んでいます。どの 22 つの広場の間もいくつかの坂を使って移動することができます。

高橋君は坂を使うことによってのみ広場の間を移動でき、坂を通るごとに楽しさが変化します。具体的には広場 XX と広場 YY を直接結ぶ坂を使って広場 XX から広場 YY まで移動したとき次のように楽しさが変化します。

  • 広場 XX が広場 YY より標高が真に高い場合、その標高差、すなわち HXHYH_X-H_Y だけ楽しさが増加する。
  • 広場 XX が広場 YY より標高が真に低い場合、その標高差の 22 倍、すなわち 2(HYHX)2(H_Y-H_X) だけ楽しさが減少する。
  • 広場 XX と広場 YY の標高が等しい場合、楽しさは変化しない。

楽しさは負の値になることもあります。

最初、高橋君は広場 11 におり、楽しさは 00 です。 高橋君はいくつかの坂( 00 本でも良い)を移動した後に好きな広場で行動を終えることができるとしたとき、行動を終えた時点の高橋君の楽しさとしてありうる最大の値を求めてください。

制約

  • 2N2×1052 \leq N \leq 2\times 10^5
  • $N-1 \leq M \leq \min( 2\times 10^5,\frac{N(N-1)}{2})$
  • 0Hi1080 \leq H_i\leq 10^8 (1iN)(1 \leq i \leq N)
  • 1Ui<ViN1 \leq U_i < V_i \leq N (1iM)(1 \leq i \leq M)
  • iji \neq j ならば (Ui,Vi)(Uj,Vj)(U_i,V_i) \neq (U_j, V_j)
  • 入力はすべて整数である。
  • どの 22 つの広場の間もいくつかの坂を使って移動することができる。

入力

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

NN MM

H1H_1 H2H_2 \ldots HNH_N

U1U_1 V1V_1

U2U_2 V2V_2

\vdots

UMU_M VMV_M

出力

答えを出力せよ。

4 4
10 8 12 5
1 2
1 3
2 3
3 4
3

広場 11 \to 広場 33 \to 広場 44 と移動したとき、楽しさは次のように変化します。

  • 広場 11(標高 1010 )から坂を使って広場 33(標高 1212 )へ移動します。楽しさは 2×(1210)=42\times (12-10)=4 だけ減少し、04=40-4=-4 になります。
  • 広場 33(標高 1212 )から坂を使って広場 44(標高 55 )へ移動します。楽しさは 125=712-5=7 だけ増加し、4+7=3-4+7=3 になります。

ここで行動を終了したとき終了時の楽しさは 33 であり、このときが最大となります。

2 1
0 10
1 2
0

一度も移動を行わない時、楽しさが最大となります。