首页 > 试题广场 >

求长度

[编程题]求长度
给定一幅n个点m条边的图和S个一定要经过的点,问从0号点出发,经过这S个点再回到0号点的最短路径长度是多少。

输入描述:
第一行一个整数T(T <= 2)表示数据组数。
对于每组数据,第一行两个整数n,m表示点数和边数(1 <= n, m <= 100,000)。
接下来m行,每行三个整数x, y, z(0 < x, y < n, 0 <= z <= 1000)表示xy之间有一条长度为c的双向边;
接下来一个整数S。(S<=10)
接下来S行每行一个整数表示一定要经过的点。
数据保证有解。


输出描述:
T行,每行一个整数表示答案。
示例1

输入

1
4 6
0 1 1
1 2 1
2 3 1
3 0 1
0 2 5
1 3 5
3
1
2
3

输出

4
头像 ZZZYM
发表于 2022-03-03 19:24:33
求长度 牛客练习赛17 T5 题解链接 法一 求出分别以s+1个点为源点的单源最短路,再全排列s个中间点的顺序,10!=362880010!=362880010!=3628800,不会超时 next_permutation函数求全排列 #include <bits/stdc++.h> 展开全文