#824. 👪 A2《谁和谁是一家人》

👪 A2《谁和谁是一家人》

👪 A2《谁和谁是一家人》🔗

兔猫信奥学院,小兔和小猫正在帮加菲老师整理一张“亲戚关系网”。 有些亲戚关系是已知的,比如:

  • MarryTom 是亲戚
  • TomBen 是亲戚

那么我们就可以推出:MarryBen 也是亲戚。

为了简化问题,我们把所有人用编号表示:1,2,3,,n1,2,3,\dots,n。 如果两个人之间通过若干条“亲戚关系”能够连起来,那么他们就属于同一个家族,也就互相是亲戚。

你的任务是:根据给定的已知亲戚关系,快速回答大量询问。


📌 亲戚关系定义

  • 若已知 aabb 是亲戚,则他们属于同一家族。
  • aabb 是亲戚,bbcc 是亲戚,则 aacc 也是亲戚。
  • 更一般地,只要两人位于同一个连通的关系网中,就视为亲戚。

🖼️ 样例关系图(由样例数据绘制)

样例已知关系(m=7m=7 条):

  • 2!!!!42!!-!!4
  • 5!!!!75!!-!!7
  • 1!!!!31!!-!!3
  • 8!!!!98!!-!!9
  • 1!!!!21!!-!!2
  • 5!!!!65!!-!!6
  • 2!!!!32!!-!!3

可以画成如下“家族连通块”示意(仅用于理解):

家族 A: 4
         |
1 —— 2 —— 3
         
家族 B: 7
         |
5 —— 6

家族 C: 8 —— 9

家族 D: 10(孤立)

输入格式

输入分为两部分。

第一部分:已知亲戚关系

第一行两个整数 n,mn, m

  • nn 表示人数(编号 1..n1..n
  • mm 表示已知亲戚关系条数

接下来 mm 行,每行两个整数 ai,bia_i, b_i,表示 aia_ibib_i 是亲戚。

第二部分:询问

接下来一行一个整数 qq,表示询问数量。 随后 qq 行,每行两个整数 ci,dic_i, d_i,询问 cic_idid_i 是否为亲戚。


注意:编号 1..n 的人都存在,即使某个人没出现在任何关系中,也可能在询问里出现,此时他独自成为一个家族

输出格式

对每个询问输出一行:

  • 若两人是亲戚输出 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

数据范围

  • 1n200001 \le n \le 20000
  • 1m10000001 \le m \le 1000000
  • 1q10000001 \le q \le 1000000

(提示:询问数量巨大,需要非常高效的做法。)