길 걷기

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

요약
N명의 학생이 각 칸에서 두 갈래 길 중 하나를 골라 N행 M열 건물 지도를 통과하며, 이미 방문한 건물은 다시 지날 수 없다. 모든 학생이 M열에 도착하는 최소 이동 거리 합을 구한다.
난이도

어려움10점 중 8점

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

문제

준혁이는 한양대의 지도를 NN행 MM열을 가지는 배열로 나타냈다. 배열의 각 칸에는 건물이 있다.

각 건물 1≤i≤N;1≤j≤M−11 \le i \le N; 1 \le j \le M-1을 만족하는 모든 건물은 22개의 건물로 이동하는 길이 있다.

  • 건물 (i,j)(i,j)에서 (A_i,j,j+1)(A\_{i,j},j+1)로 이동한다. 이 길의 길이는 a_i,ja\_{i,j}이다.
  • 건물 (i,j)(i,j)에서 (B_i,j,j+1)(B\_{i,j},j+1)로 이동한다. 이 길의 길이는 b_i,jb\_{i,j}이다.

11번 열의 모든 건물에는 학생이 위치해 있다. ii번째 학생은 (i,1)(i,1)에 위치해 있으며 총 NN명의 학생이 있다. ii번째 학생은 건물과 연결되어 있는 길을 지나 최종적으로 MM번째 열로 이동한다. 11번째 학생이 먼저 출발하며 11번째 학생이 MM번째 열의 어떤 건물로 도착했다면 22번째 학생이 출발하고, …\ldots, NN번째 학생까지 순서대로 ii번째 학생은 i−1i-1번째 학생이 MM번째 열에 도착한 이후 출발한다. 학생들은 새로운 건물을 가는 것을 좋아하기 때문에, 어떤 학생이 이미 방문한 건물로는 이동하지 않는다.

NN번째 학생까지 모두 도착한 이후 ii번째 학생이 이동한 길의 길이의 합을 f(i)f(i)라고 하자. 모든 학생들이 이미 방문한 건물을 방문하지 않고 모두 MM번째 열에 도착할 수 있는지 구해보고 가능하다면 학생들의 이동 경로를 최적으로 설정하였을 때 f(1)+f(2)+…+f(N)f(1) + f(2) + \ldots + f(N)의 최솟값을 구해보자.

입력

첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (2≤N,M≤500,000;N×M≤1,000,000)(2 \leq N, M \leq 500\\,000; N \times M \le 1\\,000\\,000)

이후 NN개의 줄에 걸쳐 i+1i+1번째 줄에 A_i,1,A_i,2,…,A_i,M−1A\_{i,1}, A\_{i,2}, \ldots, A\_{i,M-1}이 공백으로 구분되어 주어진다. (1≤A_i,j≤N)(1 \leq A\_{i,j} \leq N)

이후 NN개의 줄에 걸쳐 i+N+1i+N+1번째 줄에 B_i,1,B_i,2,…,B_i,M−1B\_{i,1}, B\_{i,2}, \ldots, B\_{i,M-1}이 공백으로 구분되어 주어진다. (1≤B_i,j≤N)(1 \leq B\_{i,j} \leq N)

이후 NN개의 줄에 걸쳐 i+2N+1i+2N+1번째 줄에 a_i,1,a_i,2,…,a_i,M−1a\_{i,1}, a\_{i,2}, \ldots, a\_{i,M-1}이 공백으로 구분되어 주어진다. (0≤a_i,j≤109)(0 \leq a\_{i,j} \leq 10^9)

이후 NN개의 줄에 걸쳐 i+3N+1i+3N+1번째 줄에 b_i,1,b_i,2,…,b_i,M−1b\_{i,1}, b\_{i,2}, \ldots, b\_{i,M-1}이 공백으로 구분되어 주어진다. (0≤b_i,j≤109)(0 \leq b\_{i,j} \leq 10^9)

출력

첫째 줄에 f(1)+f(2)+…+f(N)f(1) + f(2) + \ldots + f(N)의 최솟값을 출력한다. 만약 모든 학생들이 조건을 만족하며 MM열에 도달할 수 없다면 -1을 대신 출력한다.

예제1

  1. 예제 1

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