20240707
现如今,各地涌现出了许多备受瞩目的旅游景点。人们纷纷前往这些景点进行旅行,用摄影留下美好的瞬间,俗称为“打卡”。然而,随着景点的日益增多,游客们面临着如何制定最优旅行计划的难题。他们渴望找到一种方案,能够在每个景点打卡仅一次,并且最大限度地节省旅行费用。
现在我们已经有了很多方案,你的任务是找出能从家里出发并能回到家,满足每个景点打卡仅一次的条件下,路上花费最少的方案。
输入文件第一行给出两个正整数N和M,分别表示景点个数和景点之间的道路数量。
随后M行,每行三个整数u、v、w,分别表示道路的两个端点和这条路上的旅行花费。其中,景点编号为1~N,家的编号为0,道路是双向的。
再下一行给出一个正整数K,表示待检验的方案数。随后K行,每行给出一个方案。每行的第一个数n表示该方案中的景点数,随后n个数是路径上的景点编号。假设从家中出发到第一个景点,且从最后一个景点回家。
对于100%的数据,保证 2≤N,n,u,v≤200, 2≤M≤N*(N-1),1≤w≤100,1≤K≤500。
输出文件含两行,第一行输出满足要求的方案的个数,第二行首先输出满足要求且路上花费最少的方案的序号,然后输出这个方案的总路费,其间以一个空格分隔。如果这样的方案不唯一,则输出序号最小的那个。保证存在合法方案。
输入
6 13 0 5 2 6 2 2 6 0 1 3 4 2 1 5 2 2 5 1 3 1 1 4 1 2 1 6 1 6 3 2 1 2 1 4 5 3 2 0 2 7 6 5 1 4 3 6 2 6 5 2 1 6 3 4 8 6 2 1 6 3 4 5 2 3 2 1 5 6 6 1 3 4 5 2 7 6 2 1 3 4 5 2 6 5 2 1 4 3 6
输出
3 5 11
【输入输出样例1说明】
第 2、3、4、6 条路径都不满足方案的基本要求,所以满足条件的方案有 3 条。
第 1 条方案的总路费是:(0->5) 2 + (5->1) 2 + (1->4) 2 + (4->3) 2 + (3->6) 2 + (6->2) 2 + (2->0) 2 = 14;
第 5 条方案的总路费是:1 + 1 + 1 + 2 + 3 + 1 + 2 = 11,是一条更省钱的攻略;
第 7 条攻略的总路费是:2 + 1 + 1 + 2 + 2 + 2 + 1 = 11,与第 5 条花费相同,但序号较大,所以不输出。