寻找密切接触者
题号:NC205487
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

2019-nCoV是一种新型的冠状病毒,其传播能力非常强,目前已经演变成了全球的危机,为了对抗该病毒,隔离感染者及密切接触者是有效的防止扩散的好方法。
为防止病毒传播,某学校开学后采取了很多相关的措施,但是学生之间无论如何是无法避免要交流的,在学校有很多密切接触团体(如一个班级、一个宿舍、一个学习小组等),一个学生可能在多个团体里进行过活动。
一旦发现一个感染者,为了防止疫情扩散,就应该立即找到所有的密切接触者,这里规定,和感染者在一个团体过所有人都是密切接触者,和密切接触者在一个团体的人员也是密切接触者。
请你编程实现,在发现一个感染者的情况下,找出所有的密切接触者。

输入描述:

第一行,输入三个正整数n,m,i分别表示学生人数、团体个数、感染者编号(0 < n <= 30000,0 <= m <= 500,1 <= i <=n)
接下来m行
每行一个数字k,k表示该团体人数,接着再输入k个数表示该团体同学的编号

输出描述:

输出第一行,一个整数表示密切接触者人数
输出第二行,输出所有的密切接触者编号(编号间隔一个空格,且编号从小到大)
示例1

输入

复制
10 5 3
3 1 2 3
3 1 4 5
3 1 2 3
3 1 3 4
4 5 6 7 8

输出

复制
8
1 2 3 4 5 6 7 8