명백하고 임박한 위험

면접 대비

시간 제한1초메모리 제한128 MB

요약
위험도 행렬과 반드시 방문해야 하는 섬의 순서가 주어질 때, 그 순서를 지키면서 다른 섬을 거쳐도 되는 최소 위험도 경로의 총합을 구한다.
난이도

보통10점 중 4점

유형
그래프, 최단 경로, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

농부 존(Farmer John)은 바다에 있는 NN개의 섬 중 한 곳에 잠들어 있다는 전설의 보물을 찾아 배를 타고 항해하고 있습니다. 섬에는 11부터 NN까지 번호가 매겨져 있습니다 (1≤N≤1001 \le N \le 100).

보물 지도에 따르면, 보물이 나타나게 하려면 지정된 순서대로 MM개의 섬으로 이루어진 수열 A1,A2,…,AMA_1, A_2, \ldots, A_M (2≤M≤100002 \le M \le 10000)을 따라 이동해야 합니다. 이 경로는 섬 11에서 시작하여 섬 NN에서 끝납니다 (즉, A1=1A_1 = 1, AM=NA_M = N). 존은 중간에 다른 섬을 들르거나 같은 섬을 여러 번 방문해도 되지만, 지도가 요구하는 A1,A2,…,AMA_1, A_2, \ldots, A_M 방문은 반드시 이 순서대로 이루어져야 합니다.

존은 해적을 피하고자 하며, 모든 섬 쌍 사이의 해적 위험도 dd (0≤d≤1000000 \le d \le 100000)를 알고 있습니다. 한 경로의 총 위험도는 그가 지나간 모든 구간의 위험도의 합입니다.

지도의 요구 사항을 만족하면서 보물에 도달하는, 가장 안전한(위험도가 최소인) 경로의 총 위험도를 구하세요.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN과 MM.
  • 다음 MM개 줄: ii번째 줄에는 존이 방문해야 하는 ii번째 섬 AiA_i가 하나의 정수로 주어집니다 (A1=1A_1 = 1, AM=NA_M = N).
  • 그다음 NN개 줄: ii번째 줄에는 NN개의 정수가 주어지며, 그중 jj번째 정수는 섬 ii와 섬 jj 사이 경로의 위험도입니다. 각 줄의 ii번째 정수는 항상 00입니다.

출력

  • 한 줄에 정수 하나: 보물을 얻기 위해 존이 마주쳐야 하는 최소 총 위험도.

힌트

연속한 두 필수 방문 섬 사이를 반드시 직접 이동할 필요는 없습니다. 다른 섬을 경유하면 더 안전할 수 있습니다. 예를 들어 섬 11과 섬 22 사이를 직접 이동하면 위험도가 55이지만, 1→3→21 \to 3 \to 2로 가면 1+2=31 + 2 = 3뿐입니다. 따라서 연속한 각 필수 방문 쌍(1→21 \to 2, 2→12 \to 1, 1→31 \to 3) 사이에서 가장 안전한 경로를 사용하면 총 위험도는 3+3+1=73 + 3 + 1 = 7이 됩니다.

예제1

  1. 예제 1

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