연결하기

시간 제한5초메모리 제한1024 MB

요약
특정 과정으로 만들어진 가중치 연결그래프와 K개의 정점이 주어질 때, 주어진 K개의 정점을 모두 연결하는 부분그래프의 최소 간선 가중치 합을 구한다.
난이도

보통10점 중 7점

유형
그래프, 최소 신장 트리, 그리디, 유니온 파인드
정답자
아직 제출이 없습니다

문제

다음과 같은 과정을 통해 만들어진 무방향 가중치 연결그래프 G=(V,E)G=(V, E)가 주어진다.

  1. 정점의 집합 VV와 간선의 집합 EE에 대해 V=∅V= \emptyset, E=∅E= \emptyset으로 둔다. 입력 제한을 만족하는 양의 정수 NN과 MM을 선택한다.
  2. 정점 11, 22를 추가하고, 간선 1,2\\{1, 2 \\}를 추가한다. (V=1,2V = \\{1, 2 \\}, E=1,2E = \\{ \\{1, 2 \\} \\})
  3. 현재 VV에 없는 가장 작은 양의 정수에 해당하는 번호를 가지는 정점 vv를 추가한다.
  4. 간선 e=u_1,u_2∈Ee = \\{ u\_1, u\_2 \\} \in E를 뽑은 후, 간선의 양 끝점을 각각 vv와 연결한다. (u_1,v\\{ u\_1, v \\}, u_2,v\\{ u\_2, v \\}를 EE에 추가한다.)
  5. 정점의 개수 ∣V∣|V|가 NN 미만이라면 3번 단계로 돌아가서 이후 과정을 다시 반복한다. NN 이상이라면 6번 단계로 넘어간다.
  6. 간선의 개수가 MM보다 많다면 G=(V,E∖e)G = (V, E \setminus \\{ e \\})가 연결그래프가 되게 하는 e∈Ee \in E를 골라서 EE에서 제거한다. 즉, ee를 제거했을 때도 GG가 연결그래프인 간선 ee를 선택하여 제거한다. 간선의 개수가 MM개가 될 때까지 이 과정을 반복한다.
  7. 정점 번호를 셔플하고 각 간선에 가중치를 부여한다. 가중치는 11 이상 10910^9 이하의 양의 정수이다.

예를 들어, 다음은 올바른 입력에 해당하는 그래프이다.

그러나, 다음은 올바르지 않은 입력에 해당하는 그래프이다.

GG의 서로 다른 정점 KK개가 주어질 때, 간선의 부분집합 E′⊆EE' \subseteq E를 적절히 골라 G′=(V,E′)G'=(V, E')에서 주어진 KK개의 정점이 같은 연결성분에 있게 해야 한다. 이러한 E′E' 중 E′E'에 속하는 간선의 가중치 합의 최솟값을 구하여라. 다시 말해, 주어진 KK개의 정점을 모두 연결하는 부분그래프의 최소 가중치를 구하여라.

입력

첫 번째 줄에 NN과 MM이 공백으로 구분되어 주어진다.

두 번째 줄부터 MM개의 줄에 걸쳐 ii번째 간선을 나타내는 세 정수 s_is\_i, e_ie\_i, w_iw\_i가 공백으로 구분되어 주어진다. 이는 ii번째 간선이 s_is\_i와 e_ie\_i를 연결하는 가중치 w_iw\_i의 간선이라는 뜻이다.

(M+2)(M+2)번째 줄에는 KK가 주어진다.

(M+3)(M+3)번째 줄에는 KK개의 서로 다른 정점 V_1,V_2,⋯ ,V_KV\_1, V\_2, \cdots, V\_K가 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 답에 해당하는 정수를 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 3≤N≤10,0003 \le N \le 10\\,000
  • N−1≤M≤20,000N-1 \le M \le 20\\,000
  • 1≤s_i,e_i≤N1 \le s\_i, e\_i \le N (1≤i≤M1 \le i \le M)
  • 1≤w_i≤1091 \le w\_i \le 10^9 (1≤i≤M1 \le i \le M)
  • 2≤K≤N2 \le K \le N
  • 1≤V_i≤N1 \le V\_i \le N (1≤i≤K1 \le i \le K)
  • V_1,V_2,⋯ ,V_KV\_1, V\_2, \cdots, V\_K는 모두 서로 다르다.

힌트

예제 4의 답은 다음과 같다.

예제4

  1. 예제 1

    입력
    3 3
    1 2 1
    2 3 2
    3 1 3
    2
    1 2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3 3
    1 2 100
    2 3 2
    3 1 3
    2
    1 2
    
    예상 출력
    5
    
  3. 예제 3

    입력
    6 6
    5 2 5
    5 3 6
    2 4 1
    4 1 6
    1 6 5
    6 3 7
    4
    1 2 5 6
    
    예상 출력
    17
    
  4. 예제 4

    입력
    6 8
    1 3 5
    1 5 4
    1 6 2
    2 5 8
    2 6 1
    3 4 6
    3 5 7
    5 6 6
    3
    4 5 6
    
    예상 출력
    17