만드는 중입니다

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

보물 찾기

면접 대비

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

요약
각 섬 x에서 출발해, 가장 싼 항로 비용을 뺀 보물 값 v_y의 최댓값을 구합니다.
난이도

보통10점 중 5점

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

문제

페리 해적은 일곱 바다를 누비고 있다! 그의 지도에는 MM개의 바닷길로 이어진 NN개의 섬이 있다. ii번째 바닷길은 섬 aia_i와 bib_i를 잇고, 어느 방향으로 지나든 cic_i 코인이 든다. 바다 괴물을 물리치는 데도 돈이 꽤 든다. 페리는 NN개의 섬을 모두 정찰했고, ii번째 섬에 viv_i 코인이 든 보물 상자가 있다는 것을 알아냈다.

이제 항해 경로를 계획한다. 그는 섬 xx에서 출발해 섬 yy에서 끝나는 바닷길 경로를 따라 항해한다(빈 경로일 수도 있다). 항해가 끝나면 섬 yy의 보물 상자를 열어 전리품을 챙긴다.

문제가 하나 있다. 페리는 자신이 지금 어느 섬에 있는지 모른다. 그래서 출발할 수 있는 섬 xx마다, 섬 xx에서 출발하는 모든 항해 중 얻을 수 있는 코인의 최댓값을 구하려 한다. 페리가 고른 경로는 어느 것이든 지나갈 수 있을 만큼 코인이 충분하다고 가정해도 된다. 그는 항해의 순이익만 신경 쓴다.

입력

첫째 줄에 공백으로 구분된 두 정수 NN과 MM이 주어진다.

둘째 줄에는 공백으로 구분된 NN개의 정수 v1,v2,…,vNv_1, v_2, \ldots, v_N(0≤vi≤1090 \le v_i \le 10^9)이 주어진다.

이어지는 MM개의 줄에는 각각 세 정수 aia_i, bib_i(1≤ai,bi≤N1 \le a_i, b_i \le N), cic_i(0≤ci≤1090 \le c_i \le 10^9)가 주어진다. 두 섬 사이의 바닷길은 최대 하나이며, 각 바닷길은 서로 다른 두 섬을 잇는다.

출력

NN개의 줄을 출력한다. xx번째 줄에는 섬 xx에서 출발하는 항해 중 얻을 수 있는 순이익(코인)의 최댓값을 출력한다.

예제1

  1. 예제 1

    입력
    4 5
    6 5 9 2
    1 2 0
    3 2 3
    4 3 6
    1 3 5
    2 4 2
    
    예상 출력
    6
    6
    9
    4