이동 서비스

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

요약
비용 행렬과 요청 순서가 주어질 때, 세 명의 직원을 이동시켜 모든 요청을 순서대로 처리하는 최소 총 비용을 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 수학
정답자
아직 제출이 없습니다

문제

한 회사가 여러 도시에 흩어져 있는 고객에게 서비스를 제공한다. 회사에는 서비스 직원이 세 명 있다. 어떤 위치에서 요청이 들어오면, 그 위치에 직원이 이미 있지 않은 한, 직원 한 명이 자신의 현재 위치에서 요청이 발생한 위치로 이동하여 요청을 처리해야 한다. 한 순간에는 오직 한 명만 이동할 수 있으며, 직원들은 요청이 있을 때만 이동하고 두 명이 같은 위치에 있을 수는 없다.

한 직원을 위치 pp에서 위치 qq로 이동시키는 데에는 주어진 비용 C(p,q)C(p, q)가 든다. 이 비용 함수는 대칭이 아닐 수 있지만, 이동하지 않는 비용은 00이다. 즉 C(p,p)=0C(p, p) = 0이다. 회사는 받은 요청을 반드시 들어온 순서대로(선착순으로) 처리해야 한다.

주어진 요청 순서를 처리하는 총 비용이 최소가 되도록 각 요청을 어느 직원이 처리할지 정할 때, 그 최소 총 비용을 구하라.

입력

첫째 줄에 두 정수 LL과 NN이 주어진다. LL(3≤L≤2003 \le L \le 200)은 위치의 수, NN(1≤N≤10001 \le N \le 1000)은 요청의 수이다. 위치는 11부터 LL까지의 정수로 구분된다.

다음 LL개의 줄에는 각각 LL개의 음이 아닌 정수가 주어진다. i+1i+1번째 줄의 jj번째 수는 비용 C(i,j)C(i, j)이며, 20002000보다 작다.

마지막 줄에는 요청 목록을 나타내는 NN개의 정수가 주어진다. 각 요청은 요청이 발생한 위치의 번호로 주어진다. 처음에 세 직원은 각각 위치 11, 22, 33에 있다.

출력

요청 순서 전체를 처리하는 데 드는 최소 총 비용 MM을 하나의 정수로 출력한다.

예제5

  1. 예제 1

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

    입력
    3 5
    0 1 1
    1 0 1
    1 1 0
    1 2 3 1 2
    
    예상 출력
    0
    
  3. 예제 3

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

    입력
    4 2
    0 100 100 100
    100 0 100 100
    100 100 0 1
    100 100 1 0
    4 3
    
    예상 출력
    2
    
  5. 예제 5

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