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

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

아이템 제작

시간 제한2초메모리 제한256 MB

요약
아이템을 직접 사거나 두 재료를 소모해 무료로 조합해서 1번 아이템을 가장 싸게 구합니다.
난이도

보통10점 중 7점

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

문제

선영이는 최근에 "노리스 타워"라는 게임을 시작했다. 이 게임에는 아이템이 nn종류 있고, 모두 선영이의 캐릭터가 착용할 수 있다. 아이템에는 1번부터 nn번까지 번호가 붙어 있다. 선영이는 1번 아이템을 얻으려고 한다.

아이템을 얻는 방법은 두 가지다.

  • 아이템을 구매할 수 있다. ii번 아이템의 가격은 cic_i원이다.
  • 아이템을 제작할 수 있다. 제작 방법은 총 mm가지다. 서로 다른 두 종류의 아이템을 대장장이에게 갖다 주면, 대장장이가 결과 아이템을 무료로 만들어 준다. 갖다 준 아이템 두 개는 돌려받지 못하므로, 같은 종류를 두 번 쓰려면 두 개를 따로 마련해야 한다.

선영이가 1번 아이템을 얻는 데 필요한 돈의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 아이템 종류의 수 nn과 제작 방법의 수 mm이 주어진다. (1≤n≤10 0001 \le n \le 10\,000, 0≤m≤100 0000 \le m \le 100\,000)

둘째 줄에 아이템의 가격 c1,c2,…,cnc_1, c_2, \dots, c_n이 아이템 번호가 증가하는 순서대로 주어진다. (0≤ci≤1090 \le c_i \le 10^9)

다음 mm개 줄에 제작 방법이 한 줄에 하나씩, 결과 아이템과 재료 아이템의 번호 aia_i, xix_i, yiy_i 순으로 주어진다. 대장장이에게 xix_i번과 yiy_i번 아이템을 하나씩 갖다 주면 aia_i번 아이템을 결과로 준다는 뜻이다. (1≤ai,xi,yi≤n1 \le a_i, x_i, y_i \le n, ai≠xia_i \ne x_i, xi≠yix_i \ne y_i, yi≠aiy_i \ne a_i)

출력

1번 아이템을 얻는 데 필요한 돈의 최솟값을 한 줄에 출력한다.

예제1

  1. 예제 1

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