atcoder#ABC245G. [ABC245G] Foreign Friends

[ABC245G] Foreign Friends

题目描述

N N 人の人と K K 個の国があり、それぞれ 人 1 1 , 人 2 2 , \ldots , 人 N N および国 1 1 , 国 2 2 , \ldots , 国 K K と番号が付いています。 それぞれの人はちょうど 1 1 つの国に属しており、人 i i は国 Ai A_i に属しています。 また、L L 人の人気者がおり、具体的には人 B1 B_1 , 人 B2 B_2 , \ldots , 人 BL B_L が人気者です。 最初、N N 人のうちどの 2 2 人も友達ではありません。

神様である高橋君は、M M 個の 2 2 人組のペアについて、コストを支払うことで互いに友達にすることができます。 具体的には 1 i M 1\leq\ i\leq\ M について、コスト Ci C_i を支払うことで人 Ui U_i と人 Vi V_i を互いに友達にすることができます。

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

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

输入格式

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

N N M M K K L L A1 A_1 A2 A_2 \cdots AN A_N B1 B_1 B2 B_2 \cdots BL B_L U1 U_1 V1 V_1 C1 C_1 U2 U_2 V2 V_2 C2 C_2 \vdots UM U_M VM V_M CM C_M

输出格式

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

题目大意

NN 个点,MM 条边,每个点的颜色(值域为 [1,K][1,K])。并给定 LL 个点作为特殊点。

询问 每个点到最近的与其颜色不同的特殊点的距离(无解输出 -1) 。

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
3 1 3 1
1 2 3
1
1 2 1000000000
-1 1000000000 -1

提示

制約

  • 2  N  105 2\ \leq\ N\ \leq\ 10^5
  • 1  M  105 1\ \leq\ M\ \leq\ 10^5
  • 1  K  105 1\ \leq\ K\ \leq\ 10^5
  • 1  L  N 1\ \leq\ L\ \leq\ N
  • 1  Ai  K 1\ \leq\ A_i\ \leq\ K
  • 1  B1 < B2 <  < BL N 1\ \leq\ B_1\ <\ B_2\ <\ \cdots\ <\ B_L\leq\ N
  • 1 Ci 109 1\leq\ C_i\leq\ 10^9
  • 1 Ui < Vi N 1\leq\ U_i\ <\ V_i\leq\ N
  • i  j i\ \neq\ j ならば (Ui, Vi) (Uj,Vj) (U_i,\ V_i)\neq\ (U_j,V_j)
  • 入力は全て整数である。

Sample Explanation 1

1 1 , 人 2 2 , 人 3 3 , 人 4 4 はそれぞれ国 1 1 , 国 1 1 , 国 2 2 , 国 2 2 に属しており、人気者は人 2 2 , 人 3 3 2 2 名です。このとき、 - 人 1 1 と異なる国に属する人気者は人 3 3 のみです。人 1 1 と 人 3 3 を間接的に友達にするには、それぞれコスト 15,30 15,30 を払って人 1 1 と人 2 2 , 人 2 2 と人 3 3 を友達にした時がかかるコストが最小で、このとき 15+30=45 15+30=45 となります。 - 人 2 2 と異なる国に属する人気者は人 3 3 のみです。コスト 30 30 を払って人 2 2 と人 3 3 を友達にした時が最小となります。 - 人 3 3 と異なる国に属する人気者は人 2 2 のみです。コスト 30 30 を払って人 2 2 と人 3 3 を友達にした時が最小となります。 - 人 4 4 と異なる国に属する人気者は人 2 2 のみです。人 4 4 と 人 2 2 を間接的に友達にするには、それぞれコスト 15,10 15,10 を払って人 1 1 と人 2 2 , 人 1 1 と人 4 4 を友達にした時がかかるコストが最小で、このとき 15+10=25 15+10=25 となります。

Sample Explanation 2

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