30014 - 经过指定点的最短路径

给出一个有 n 个顶点的有向网,指定其中 k 个顶点(不含顶点 1 和顶点 n),求从顶点 1 到顶点 n 的、经过那 k 个顶点的最短路。

输入

第一行是两个整数 ne,分别表示顶点数和弧数目(1 \le n \le 401 \le e \le n \times n)。

接下来 e 行,每行三个整数 i, j, v0 < i, j \le n0 < v \le 100),表示从顶点 i 到顶点 j 的一条权值为 v 的弧。

接下来一行是一个正整数 k1 \le k \le n - 2)。

接下来一行是 k 个正整数,表示必须经过的 k 个顶点。

输出

如果不存在满足条件的路径,输出一行 "No solution"

否则,输出两行:

  • 1 行:该最短路的长度。
  • 2 行:从顶点 1 到顶点 n 的最短路,顶点之间用一个空格分隔,要求按路径的顶点次序,前一个顶点必须有弧指向后一个顶点。

样例

输入

5 7
1 2 2
1 3 3
2 4 1
3 4 2
2 5 5
3 5 4
4 5 3
2
2 3

输出

8
1 2 4 3 5

提示

样例解释 1

第二组询问的最优方案为:选择 3 个物品 112499999998 个物品 2

子任务

对于所有测试数据,1 \le n \le 501 \le v_i \le 10^51 \le c_i \le 10^61 \le q \le 10^510^{11} \le V \le 10^{12}

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题