2001: 寻找小组
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:28
解决:22
题目描述
时间过得真快,转眼间,Fengzee进入高中的第二学期开始了。步入学校,Fengzee发现学校里发生了大变化,老师们为学生们安排了若干个“合作学习小组”。这是一所很大的学校,有N (1<=N<=100000)名学生,所有学生用1和N之间的正整数编号。为了考察同学们的智商和组织能力,老师们贴出的告示上面,并没有明确地写出哪个同学在哪个小组。所有的信息,都是通过这样的句式给出的:“A和B是一个小组的。”特别地,如果某个同学的编号没有在任何一条信息中出现,很遗憾,他必须一个人组成一个小组。
你的任务是编写一个程序,根据M (1<=M<=100000)条这样的告示信息,计算出整个学校总共有多少个小组,以及给定的T (1<=T<=500)对同学是不是同一小组的成员。因为学生实在太多了,老师们很可能会犯一些小错误,将某两个学生的关系重复描述两次甚至更多,你需要排除这一点的干扰。
输入
你的输入文件(find.in)包含两大部分。第一部分是信息部分,第二部分是提问部分,两部分在文件中相连。信息部分的第一行有两个整数N, M,分别为学生总数以及信息的条数,以下M行每行两个空格分开的整数A, B,意味着编号为A和B的两位同学在一个小组。提问部分的第一行为一个整数T,表示总共有T个问题,以下T行每行两个整数P, Q,含义是“编号为P和Q的两位同学是不是同一小组的?”
输出
输出文件(find.out)中,第一行应为整个学校小组的总数,以下T行每行回答一个问题,请依照提问次序,针对每个问题输出“Yes”或“No”(不含引号,注意大小写),分别表示个同学在或不在同一个小组。
样例输入 复制
8 6
1 2
3 2
5 3
2 3
4 7
6 7
3
1 3
7 5
3 8
样例输出 复制
3
Yes
No
No