A75068.观光旅游
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:512MB
题目描述
有 N 座岛屿和 M 条双向桥梁,每条桥梁连接两个岛屿。岛屿和桥梁分别编号为 1,2,⋯,N 和 1,2,⋯,M。
桥梁 i 连接岛屿 Ui 和 Vi ,在任一方向上穿过它所需的时间是 Ti 。
没有桥梁会连接同一个岛屿,但两个岛屿可以通过多座桥梁直接连接。
人们可以使用一些桥梁在任意两个岛屿之间旅行。
您会收到 Q 的查询,请逐一回答。第 i 个查询如下:
你会得到 Ki 不同的桥:桥 Bi,1,Bi,2,⋯,Bi,Ki。
找到使用这些桥梁从 1 岛屿到 N 岛屿至少一次所需的最短时间。
只考虑过桥所花费的时间。
你可以以任何顺序和任何方向穿过给定的桥梁。
输入格式
第一行输入两个正整数 N,M (2≤N≤400;N−1≤M≤2×105) ,表示岛屿个数。
接下来 M 行,每行输入三个整数 U,V,T (1≤Ui<Vi≤N;1≤Ti≤109) ,表示这条桥梁连接的两个岛屿以及通过这条桥梁需要花费的时间。
第 M+1 行输入一个正整数 Q (1≤Q≤3000) ,表示询问次数。
接下来 Q 个询问,每个询问输入两行:
第一行输入一个正整数 K (1≤Ki≤5),表示这次询问需要通过的桥梁个数。
第二行输入 K 个正整数 B1,B2,⋯,Bk (1≤B1<B2<⋯<BK≤M),表示这次询问需要通过的桥梁的编号。
输出格式
输出 Q 行,每行一个整数。
第 i 个整数表示第 i 次询问的答案。
输入输出样例
输入#1
3 5 1 2 10 1 3 20 1 3 30 2 3 15 2 3 25 2 1 1 2 3 5
输出#1
25 70
输入#2
6 6 1 5 1 2 5 1 2 4 1 3 4 1 3 6 1 1 6 1 2 5 1 2 3 4 5 1 5
输出#2
5 3
输入#3
5 5 1 2 1000000000 2 3 1000000000 3 4 1000000000 4 5 1000000000 1 5 1000000000 1 1 3
输出#3
4000000000
说明/提示
样例1解释
对于第一个查询,我们需要找到通过桥梁 1 从岛屿 1 到岛屿 3 的最短时间。最短时间是通过桥梁 1 从岛屿 1 到岛屿 2,然后通过桥梁 4 从岛屿 2 移动到岛屿 3 来实现的。所需时间为 10+15=25。因此,在第一行输出 25。
对于第二个查询,我们需要找到通过桥梁 3 和桥梁 5 从岛屿
1 到岛屿 3 的最短时间。最短时间是通过桥梁 3 从岛 1 移动到岛 3 ,然后通过桥梁 5 移动到岛屿 2 ,最后通过桥梁 4 返回岛屿 3 来实现的。所需时间为 30+25+15=70。因此,在第二行输出 70。