你刚搬进一套新公寓,有一长串你需要买的东西。不幸的是,买这么多东西需要去很多不同的商店。你想尽量减少购买所需物品所需的驾驶时间。
你的城市被组织成一组由道路连接的十字路口。你的房子和每家商店都在某个十字路口。你的任务是找到从你家出发的最短路线,参观所有你需要购物的商店,然后返回你家。
输入
输入的第一行包含一个整数,即接下来的测试用例数。每个测试用例以包含两个整数N和M的行开始,这两个整数分别是城市中路口和道路的数量。每个整数都在1到100000之间,包括。交叉点的编号从0到N-1。你的房子在0号路口。接下来是M行,每一行包含三个整数X、Y和D,表示X和Y的交叉点由一条长度为D的双向道路连接。接下来的一行包含一个整数S,即你需要访问的商店的数量,包括1到10个。随后的S行每一个都包含一个整数,指示每个商店所在的交叉点。从你家到所有商店都是可能的。
输出
对于每个测试用例,输出一行,其中包含一个整数,即从您的房子出发、访问所有商店和返回您的房子的最短购物旅程的长度。
样例输入
1
4 - 6
0 1 1
1 2 1
1 2 3
3 0 1
0 2 5
1 3 5
3
1
2
3
样例输出
4
参考代码:
https://blog.csdn.net/haojunliang_hao/article/details/76577427