wzc与小灰
题号:NC219624
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

花括号部分为无关题意的背景故事,可直接跳过。
{
蒟蒻wzc曾经养过一只非常可爱的灰色垂耳兔,把她叫做小灰。
那段时间因为特殊的原因,wzc所有的朋友都不知道wzc去了哪里,wzc也不想让朋友看到自己那时候的样子,长期一个人待在家里,小灰成了wzc唯一的陪伴和倾诉对象。
wzc喜欢小灰到了什么程度呢,他到了睡觉都要把小灰放在自己床头一起睡。
}
可是某一天夜里,wzc做起了噩梦,梦到自己和小灰出去公园里玩时没看住小灰,把小灰给弄丢了。
焦急的wzc要到公园的各个景点去寻找小灰。
公园里共有n个景点,使用1-n的数字进行标记,wzc最开始位置是公园门口,标记为0。
公园里有m条道路,各自连接着两个地点。(无向边)
现在wzc规划了k条用1-m标记了的寻找方案,你需要帮助他找到经过的不同景点数量最多的有效方案,如果有多个答案,则输出长度更长的那个,如果仍然有多个答案,输出编号更小的那个。
题目保证至少存在一个有效方案。
(注意这里的有效方案定义为,方案中任意时刻的下一个目标景点,都必须与当前位置有直接的路径相连,比如景点1和2,2和3之间有道路,而1和3之间没有,那么方案1->3就不是一个有效方案,因为景点1到景点3不存在直接的道路连接)

输入描述:

第一行为一个整数n和一个整数m,分别代表公园里景点的个数和道路的数量。(1<=n<=50,1<=m<=n*(n+1)/2)
接下来m行每行两个整数a和b,代表地点a和b之间存在着一条道路连接。题目保证不存在重复的路径(0<=a,b<=n)
第m+2行为一个整数k,代表寻找方案的数量(1<=k<=100)
接下来为k行,第2+m+i行代表第i种寻找方案的路径情况。
每行的第一个整数L代表该寻找方案的路径长度,之后跟着L个用空格隔开的整数xi,依次代表该寻找方案经过的景点。
(1<=L<=100,0<=xi<=n,数据保证至少存在一个有效方案,且不存在当前在景点i,下一个目标仍为景点i的情况)

输出描述:

输出一个整数,代表经过不同景点数量最多的有效方案,如果有多个答案,输出长度更长的那个,如果仍然有多个答案,输出编号更小的那个。
示例1

输入

复制
2 2
0 1
2 1
2
2 2 1
1 1

输出

复制
2

说明

第一种方案,起点0 到2之间不存在直接的道路,因此为非有效方案。
第二种方案,可以从起点0走到景点1,共经过了一个不同的景点,为有效方案。
示例2

输入

复制
3 4
0 1
3 0
1 2
3 1
4
2 1 3
3 3 1 2
4 3 0 1 2
4 1 3 1 2

输出

复制
3

说明

第2,3,4种方案均经过了3个不同的景点,第3,4种方案的长度均为4,比第2种方案长。而第3,4种方案中第3种方案的编号更小,因此选择方案3。