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

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

군탈체포조

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

요약
하나의 기지와 최대 다섯 명의 탈영병, 그리고 방문할 때마다 통행료를 받는 통행료 칸이 있는 N x N 격자에서 기지에서 출발해 모든 탈영병을 찾고 돌아오는 최소 통행료 합을 구한다.
난이도

보통10점 중 7점

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

문제

군탈 체포조(Deserter Pursuit)는 탈영병을 추적하고 체포하는 군인을 말하며, 줄여서 DP라고도 한다.

어느 날 군탈 체포조인 호열이에게 활동비와 지도를 주고 탈영병들을 모두 잡아 부대에 복귀하라는 명령이 내려졌다. 돈을 아껴 봉지라면을 사 먹고 싶은 호열이는 활동비를 최대한 아끼면서 탈영병을 모두 잡으려고 한다.

지도는 N×NN \times N 크기의 격자로 표현된다. 지도 위에는 부대와 탈영병들의 위치가 주어지며, 부대나 탈영병이 없는 나머지 칸에는 모두 톨게이트가 존재한다.

각 톨게이트에는 내야 하는 통행료가 정해져 있고, 톨게이트가 있는 칸을 방문하려면 반드시 통행료를 지불해야 한다. 또한 같은 칸을 여러 번 방문해도 매번 통행료를 내야 한다.

호열이는 부대에서 출발해 탈영병을 모두 잡은 후 복귀해야 하며, 중간에 부대를 들러도 상관없다. 단, 한 번에 상하좌우 인접한 곳으로 1칸씩 이동할 수 있고, 지도에 표시된 곳 이외의 공간에는 갈 수 없다.

아무것도 하기 싫은 호열이를 위해 부대에서 출발해 탈영병을 모두 잡은 후 부대로 복귀하는 데 드는 최소 비용을 대신 구해 주자.

입력

첫째 줄에 격자의 크기 NN이 주어진다. (5≤N≤1,0005 \le N \le 1,000)

둘째 줄부터 NN개의 줄에 지도의 모양이 주어진다. −1-1은 부대, 00은 탈영병, 11 이상의 정수는 톨게이트의 통행료를 의미하며 모든 통행료는 1,0001,000 이하의 정수이다.

단, 입력에서 부대는 1개만 주어지며 탈영병의 수는 5명 이하로 주어진다.

탈영병이 존재하지 않을 수도 있다.

출력

첫째 줄에 문제의 정답을 출력한다.

예제2

  1. 예제 1

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

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