atcoder#ABC245G. [ABC245G] Foreign Friends

[ABC245G] Foreign Friends

配点 : 600600

問題文

NN 人の人と KK 個の国があり、それぞれ 人 11, 人 22, \ldots, 人 NN および国 11, 国 22, \ldots, 国 KK と番号が付いています。 それぞれの人はちょうど 11 つの国に属しており、人 ii は国 AiA_i に属しています。 また、LL 人の人気者がおり、具体的には人 B1B_1, 人 B2B_2, \ldots, 人 BLB_L が人気者です。 最初、NN 人のうちどの 22 人も友達ではありません。

神様である高橋君は、MM 個の 22 人組のペアについて、コストを支払うことで互いに友達にすることができます。 具体的には 1iM1\leq i\leq M について、コスト CiC_i を支払うことで人 UiU_i と人 ViV_i を互いに友達にすることができます。

ここで、各 1iN1\leq i\leq N について、次の問題を解いてください。

高橋君は、人 ii を、人 ii の属する国とは異なる国に属する人気者と間接的に友達にすることは可能か? 可能ならば、それを達成するのに必要なコストの総和の最小値を求めよ。 ただし、人 ss と人 tt が間接的に友達であるとは、ある非負整数 nn と人の列 (u0,u1,,un)(u_0, u_1, \ldots , u_n) が存在し, u0=su_0=s, un=tu_n=t かつ 0i<n0\leq i < n について、人 uiu_i と 人 ui+1u_{i+1} が互いに友達であることをさす。

制約

  • 2N1052 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • 1K1051 \leq K \leq 10^5
  • 1LN1 \leq L \leq N
  • 1AiK1 \leq A_i \leq K
  • $1 \leq B_1
  • 1Ci1091\leq C_i\leq 10^9
  • $1\leq U_i
  • iji \neq j ならば (Ui,Vi)(Uj,Vj)(U_i, V_i)\neq (U_j,V_j)
  • 入力は全て整数である。

入力

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

NN MM KK LL

A1A_1 A2A_2 \cdots ANA_N

B1B_1 B2B_2 \cdots BLB_L

U1U_1 V1V_1 C1C_1

U2U_2 V2V_2 C2C_2

\vdots

UMU_M VMV_M CMC_M

出力

XiX_i を、人 ii を異なる国に属する人気者と間接的に友達にすることが不可能ならば 1-1、 そうでないならば、達成するのに必要な最小コストの値として定義する。 X1,X2,,XNX_1,X_2,\ldots ,X_N を空白区切りで一行に出力せよ。

4 4 2 2
1 1 2 2
2 3
1 2 15
2 3 30
3 4 40
1 4 10
45 30 30 25

11, 人 22, 人 33, 人 44 はそれぞれ国 11, 国 11, 国 22, 国 22 に属しており、人気者は人 22, 人 3322 名です。このとき、

  • 11 と異なる国に属する人気者は人 33 のみです。人 11 と 人 33 を間接的に友達にするには、それぞれコスト 15,3015,30 を払って人 11 と人 22, 人 22 と人 33 を友達にした時がかかるコストが最小で、このとき 15+30=4515+30=45 となります。
  • 22 と異なる国に属する人気者は人 33 のみです。コスト 3030 を払って人 22 と人 33 を友達にした時が最小となります。
  • 33 と異なる国に属する人気者は人 22 のみです。コスト 3030 を払って人 22 と人 33 を友達にした時が最小となります。
  • 44 と異なる国に属する人気者は人 22 のみです。人 44 と 人 22 を間接的に友達にするには、それぞれコスト 15,1015,10 を払って人 11 と人 22, 人 11 と人 44 を友達にした時がかかるコストが最小で、このとき 15+10=2515+10=25 となります。
3 1 3 1
1 2 3
1
1 2 1000000000
-1 1000000000 -1

11 にとって自身は間接的な友達といえますが、異なる国に属していないため、 「異なる国に属する人気者」の条件をみたす相手はいないことに注意してください。