만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

모든 길은 요코하마로 통하는가?

면접 대비

시간 제한3초메모리 제한2048 MB

요약
1번 도시에서 간선 하나를 끊었을 때 분리되는 도시들의 중요도 합에 그 간선의 취약도를 곱한 값의 총합이 최소가 되는 신장 트리를 구합니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, 힙
정답자
아직 제출이 없습니다

문제

제한 시간: 3000 ms. 메모리 제한: 2048 MB.

"Omnes viae Romam ducunt"는 "모든 길은 로마로 통한다"라는 뜻의 오래된 라틴어 속담이다. 한 나라의 모든 지역에서 수도로 갈 수 있는 것은 지금도 바람직하다.

카나가와 왕국에는 수도 요코하마를 포함해 여러 도시가 있다. 왕국의 교통부는 이 도시들을 모두 잇는 고속도로망을 건설할 계획이다.

후보 고속도로 구간은 여러 개이며, 각 구간은 두 도시를 직접 잇는다. 고속도로망은 후보 구간 중에서 골라 만든 구간의 집합이다. 고속도로망은 다음 조건을 만족해야 한다.

  • 모든 도시는 고속도로 구간을 통해 직접 또는 간접적으로 연결되어야 한다.
  • 예산을 아끼기 위해 구간 수는 최소여야 한다. 즉 고속도로망은 중복되지 않아야 하며, 임의의 두 도시를 잇는 경로가 하나뿐이어야 한다.

요코하마로 가는 접근성이 특히 중요하다. 고속도로망에는 중복이 없으므로, 자연재해로 구간 하나를 쓸 수 없게 되면 일부 도시는 요코하마에서 갈 수 없게 된다.

도시마다 인구와 경제 규모에 따라 중요도 값이 주어진다. 고속도로망이 주어졌을 때 한 구간에서 자연재해가 나면, 그 구간 때문에 요코하마에서 접근할 수 없게 되는 도시들의 중요도 합이 피해가 된다. 후보 구간마다 취약도도 평가된다. 구간의 위험도는 그 구간의 피해와 취약도를 곱한 값이고, 고속도로망의 총 위험도는 망에 속한 모든 구간 위험도의 합이다. 총 위험도의 최솟값을 구한다.

입력

첫 줄에 정수 nn과 mm이 주어진다 (2≤n≤1052 \le n \le 10^5, 1≤m≤3×1051 \le m \le 3 \times 10^5). 각각 도시의 수와 후보 구간의 수이다. 도시는 1번부터 nn번까지 번호가 붙어 있으며, 1번이 요코하마이다.

둘째 줄에는 정수 p1,…,pnp_1, \dots, p_n이 주어진다. 각 pip_i (1≤pi≤10001 \le p_i \le 1000)는 ii번 도시의 중요도 값이다.

이어서 mm개의 줄에 후보 구간이 주어진다. jj번째 줄에는 정수 uju_j, vjv_j, qjq_j가 주어지며, 이는 uju_j번 도시와 vjv_j번 도시를 잇는 후보 구간의 취약도가 qjq_j라는 뜻이다 (1≤uj<vj≤n1 \le u_j < v_j \le n, 1≤qj≤1061 \le q_j \le 10^6). 같은 쌍 (uj,vj)(u_j, v_j)는 한 번만 주어진다.

이 구간들 중 일부로 모든 도시를 연결하는 고속도로망을 만들 수 있음이 보장된다.

출력

총 위험도의 최솟값을 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    5 7
    2 6 7 7 10
    1 5 8
    1 4 6
    3 4 9
    2 3 6
    2 4 7
    1 3 4
    4 5 4
    
    예상 출력
    210