아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

YATP

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

요약
노드에 벌점, 간선에 가중치가 있는 트리에서 각 노드 u마다 모든 v에 대해 dist(u,v) + p_u*p_v의 최솟값을 구해 전부 더한다.
난이도

어려움10점 중 9점

유형
트리, 분할 정복, 동적 계획법, 최단 경로
정답자
아직 제출이 없습니다

문제

트리 문제를 하나 더 풀어 보자. 노드마다 벌점이 있고 간선마다 가중치가 있는 트리가 주어진다. 두 노드를 잇는 단순 경로의 비용은 그 경로에 속한 간선 가중치의 합에 양 끝 노드의 벌점을 곱한 값을 더한 것이다. 노드 uu와 노드 vv를 잇는 경로의 비용은 dist(u,v)+pu×pv\mathrm{dist}(u, v) + p_u \times p_v이며, dist(u,v)\mathrm{dist}(u, v)는 경로에 속한 간선 가중치의 합, pup_u는 노드 uu의 벌점이다.

간선을 하나도 지나지 않는 경로도 경로로 친다. 이런 경로의 비용은 그 노드 벌점의 제곱, 즉 pu2p_u^2이다.

각 노드마다 그 노드에서 시작하는 경로의 비용 중 최솟값을 구한다. 최종 답은 모든 노드의 최솟값을 더한 값이다.

입력

입력은 테스트 케이스 하나로 이루어진다.

첫째 줄에 노드의 개수 nn이 주어진다. (1≤n≤200,0001 \le n \le 200{,}000)

둘째 줄에 각 노드의 벌점 pp가 노드 번호 순서대로 공백으로 구분되어 nn개 주어진다. (1≤p≤1,000,0001 \le p \le 1{,}000{,}000)

이어지는 n−1n - 1개의 줄에는 정수 ii, jj, ww가 공백으로 구분되어 주어진다. 이는 노드 ii와 노드 jj를 잇는 가중치 ww의 간선을 뜻한다. (1≤i≤n1 \le i \le n, 1≤j≤n1 \le j \le n, i≠ji \ne j, 1≤w≤1,000,0001 \le w \le 1{,}000{,}000)

출력

모든 노드의 최소 비용을 더한 값을 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    5
    9 7 1 1 9
    3 2 8
    5 2 10
    4 3 10
    2 1 2
    
    예상 출력
    63
    
  2. 예제 2

    입력
    1
    1000000
    
    예상 출력
    1000000000000
    
  3. 예제 3

    입력
    2
    1 1000000
    2 1 1000000
    
    예상 출력
    2000001