SOJ ONLINE JUDGE

TSP

난이도: Gold I 출제자: rlatjwls7882 시간 제한: 1000 ms 메모리 제한: 512 MB
비트필드를 이용한 다이나믹 프로그래밍외판원 순회 문제

$1$부터 $N$까지 번호가 붙은 $N$개의 도시가 있다.

서로 다른 두 도시 사이를 이동할 때 필요한 비용이 주어진다.

$1$번 도시에서 출발하여 모든 도시를 정확히 한 번씩 방문한 뒤 다시 $1$번 도시로 돌아오려고 한다.

필요한 비용의 최솟값을 구하라.

입력

첫 번째 줄에 도시의 개수 $N$이 주어진다. $(1 \leq N \leq 17)$

두 번째 줄부터 $N$개의 줄에 걸쳐 도시 사이의 이동 비용이 주어진다.

$i$번째 줄의 $j$번째 정수 $C_{i,j}$는 $i$번 도시에서 $j$번 도시로 이동할 때 필요한 비용을 의미한다.

$i=j$라면 $C_{i,j}=0$이고, $i \neq j$라면 $1 \leq C_{i,j} \leq 10^9$이다.

출력

$1$번 도시에서 출발하여 모든 도시를 정확히 한 번씩 방문한 뒤 다시 $1$번 도시로 돌아올 때 필요한 비용의 최솟값을 출력한다.

예제 입력 1

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

예제 출력 1

35

예제 입력 2

1
0

예제 출력 2

0

제출