数据结构与算法专题题库

1027. 旅行商问题

单点时限: 3.0 sec

内存限制: 512 MB

一个售货员必须访问$n$个城市,恰好访问每个城市一次,并最终回到出发城市。

售货员从城市$i$到城市$j$的旅行费用是一个整数,旅行所需的全部费用是他旅行经过的的各边费用之和,而售货员希望使整个旅行费用最低。

(等价于求图的最短哈密尔顿回路问题)令$G=(V, E)$是一个带权重的有向图,顶点集$V=(v_0, v_1, …, v_{n-1 })$。从图中任一顶点$v_i$出发,经图中所有其他顶点一次且只有一次,最后回到同一顶点$v_i$的最短路径。

输入格式

第一行两个数$n$和$m$,表示顶点数和边数,其中$1 \leq n \leq 12,0 \leq m \leq 1000$。

接下来$m$行,每行三个数$u,v,c$,表示有向边$u$到$v$,路径长度为$c$,$ c \leq 10^5$。

图中可能有重边和自环。

输出格式

一个数如果不存在哈密顿环路,则输出-1,否则输出最短哈密尔顿回路长度。

样例

Input
4 12
1 2 1
1 3 10
1 4 10
2 1 10
2 3 1
2 4 10
3 1 10
3 2 10
3 4 1
4 1 1
4 2 10
4 3 10
Output
4

提示

默认$i$到$i$的路径长度为0

不限期开放

题目列表