爸爸的爸爸叫什么?爸爸的爸爸叫爷爷。
爸爸的妈妈叫什么?爸爸的妈妈叫奶奶。
爸爸的哥哥叫什么?爸爸的哥哥叫伯伯。
爸爸的弟弟叫什么?爸爸的弟弟叫叔叔。
爸爸的姐妹叫什么?爸爸的姐妹叫姑姑。
妈妈的爸爸叫什么?妈妈的爸爸叫外公。
妈妈的妈妈叫什么?妈妈的妈妈叫外婆。
妈妈的兄弟叫什么?妈妈的兄弟叫舅舅。
妈妈的姐妹叫什么?妈妈的姐妹叫阿姨。
爷爷,爸爸的爸爸叫爷爷。奶奶,爸爸的妈妈叫奶奶。
伯伯,爸爸的哥哥叫伯伯。叔叔,爸爸的弟弟叫叔叔。
姑姑,爸爸的姐妹叫姑姑。外公,妈妈的爸爸叫外公。
外婆,妈妈的妈妈叫外婆。舅舅,妈妈的兄弟叫外舅舅。
阿姨,妈妈的姐妹叫阿姨。
这首耳熟能详的《家族歌》相信大家都非常熟悉了吧,但是家族歌里面的关系只在三代以内,如果超出了三代,就像是“你爷爷的外甥的儿子的表弟”通过这首《家族歌》就无法判定你们是否有血缘关系了。
或许你不知道,你的某个朋友跟你有血缘关系。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。但是,如果我们能够得到完整的家谱,判断两个人是否有血缘应该是可行的。但是如果两个人的最近公共祖先与他们相差好几代,使得家谱十分庞大,那么检验血缘关系就是在不是人力所能及的了。
你的任务就是通过给定的家谱使用计算机判定任意的两个人是否有血缘关系,为了将问题简化,我们给出的家谱信息将会简化。如Marry和Karry有血缘关系,Karry和Tom有血缘关系,我们只需要你推断出Marry与Tom是否有血缘关系即可。
输入数据由两个部分组成;
第一部分由两个整数N,M(1\leq N\leq 2\times 10^4,1\leq M\leq 10^6)开始,其中N代表涉及到的人的个数,这些人从1编号到N。接下来的M行,每行有两个数a_i,b_i,表示第a_i个人与第b_i个人有血缘关系。
第二部分以一个整数Q(1\leq Q\leq 10^6)开始,接下来的Q行,每行有两个数c_i,d_i,表示询问第c_i个人与第d_i个人是否有血缘关系。
对于每一个询问c_i,d_i,输出一行,如果他们之间有血缘关系,则输出“Yes”,否则输出"No"(不包含引号)。
10 7 2 4 5 7 1 3 8 9 1 2 5 6 2 3 3 3 4 7 10 8 9
Yes No Yes
数据规模已在题面中给出,在此处将不再重复。
时间限制 | 1 秒 |
内存限制 | 512 MB |