외판원 순회 2


답안 제출

Points: 15
시간 제한: 2.0s
메모리 제한: 1G

문제 유형

1번부터 \(N\)번까지 번호가 붙어 있는 \(N\)개의 도시가 있다. 도시들 사이에는 길이 있을 수도 있고 없을 수도 있으며, 각 길을 지나갈 때 드는 비용이 다를 수 있다.

한 외판원이 어느 한 도시에서 출발하여 \(N\)개의 모든 도시를 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획하려고 한다.

단, 한 번 방문했던 도시로는 다시 갈 수 없다. (맨 마지막에 출발했던 도시로 돌아오는 것은 예외)

각 도시 간의 이동 비용이 행렬 \(W[i][j]\) 형태로 주어진다. \(W[i][j]\)는 도시 \(i\)에서 도시 \(j\)로 가기 위한 비용을 나타낸다.

비용은 대칭적이지 않을 수 있다. 즉, \(W[i][j]\)와 \(W[j][i]\)는 다를 수 있다. 도시 \(i\)에서 도시 \(j\)로 갈 수 없는 경우 \(W[i][j] = 0\)으로 주어진다.

\(N\)개의 도시를 모두 순회하는 데 드는 최소 비용을 구하는 프로그램을 작성하시오. 항상 순회 가능한 경로가 존재하는 입력만 주어진다.

입력

첫째 줄에 도시의 개수 \(N\)이 주어진다. (\(2 \le N \le 16\)) 둘째 줄부터 \(N\)개의 줄에 걸쳐 각 도시 간의 이동 비용을 나타내는 \(N \times N\) 행렬이 주어진다.

  • 각 행렬의 성분은 \(0\) 이상 \(1,000,000\) 이하의 정수이다.
  • 자기 자신으로 가는 비용 \(W[i][i]\)는 항상 \(0\)이다.

출력

첫째 줄에 외판원의 순회에 필요한 최소 비용을 출력한다.

예제 입력 1

4
0 10 15 20
5 0 9 10
6 13 0 12
8 8 9 0

예제 출력 1

35

코멘트

현재 작성된 코멘트가 없습니다.