巡回训练(tour)

题目描述

DAMON THRONE\text{DAMON THRONE}nn 个训练基地,编号为 11nn,从基地 ii 前往基地 jj 需要花费 ci,jc_{i,j} 点能量。

小 D 从基地 11 出发,需要访问每个训练基地恰好一次,最后回到基地 11

也就是说,他需要选择一个排列:

p1,p2,,pnp_1,p_2,\ldots,p_n

满足:

p1=1p_1=1

11nn 中的每个编号恰好出现一次。

这次巡回训练的总能量消耗为:

$$c_{p_1,p_2}+c_{p_2,p_3}+\cdots+c_{p_{n-1},p_n}+c_{p_n,p_1} $$

请你求出完成巡回训练所需要的最小能量。

输入格式

第一行包含一个整数 nn,表示训练基地数量。

接下来 nn 行,每行包含 nn 个整数。

ii 行第 jj 个整数为 ci,jc_{i,j},表示从基地 ii 前往基地 jj 的能量消耗。

输出格式

输出一行一个整数,表示完成巡回训练所需要的最小能量。

输入输出样例 #1

输入 #1

4
0 10 15 20
10 0 35 25
15 35 0 30
20 25 30 0

输出 #1

80

样例解释 #1

一种最优的巡回路线为 124311\rightarrow2\rightarrow4\rightarrow3\rightarrow1,总能量消耗为 10+25+30+15=8010+25+30+15=80

可以证明,不存在能量消耗更小的巡回路线。

输入输出样例 #2

输入 #2

3
0 4 7
6 0 5
3 8 0

输出 #2

12

样例解释 #2

可以选择路线 12311\rightarrow2\rightarrow3\rightarrow1,总能量消耗为 4+5+3=124+5+3=12,另一条路线 13211\rightarrow3\rightarrow2\rightarrow1,总能量消耗为 7+8+6=217+8+6=21,所以最小能量为 1212

输入输出样例 #3

输入 #3

1
0

输出 #3

0

样例解释 #3

只有一个训练基地,小 D 不需要移动,因此能量消耗为 00

数据范围与约定

对于所有测试数据,保证:

1n18,ci,i=01\le n\le18,\quad c_{i,i}=0

对于任意 iji\ne j,保证:

1ci,j1091\le c_{i,j}\le10^9

从基地 ii 到基地 jj 的能量消耗不一定等于从基地 jj 到基地 ii 的能量消耗。

测试点 分值 nn ci,jc_{i,j} 特殊性质
121\sim2 1010 8\le8 100\le100
343\sim4 2020 12\le12 109\le10^9 A\text{A}
565\sim6 15\le15 B\text{B}
787\sim8 18\le18 C\text{C}
9109\sim10 3030

特殊性质 A\text{A}:保证对于任意 i,ji,j,都有 ci,j=cj,ic_{i,j}=c_{j,i}

特殊性质 B\text{B}:保证所有 iji\ne jci,jc_{i,j} 都相同。

特殊性质 C\text{C}:保证 ci,j=ij+1c_{i,j}=|i-j|+1