测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A70718. 是不是亲戚

编程题 入门

题目描述

若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。

规定:xy 是亲戚,yz 是亲戚,那么 xz 也是亲戚。如果 x,y 是亲戚,那么 x 的亲戚都是 y 的亲戚,y 的亲戚也都是 x 的亲戚。

输入格式

第一行:三个整数 n,m,p,(n \le 5000,m \le 5000,p \le 5000 ),分别表示有 n 个人,m 个亲戚关系,询问 p 对亲戚关系。

以下 m 行:每行两个数 M_i,M_j1 \le M_i,M_j \le N,表示 M_iM_j 具有亲戚关系。

接下来 p 行:每行两个数 P_i,P_j,询问 P_iP_j 是否具有亲戚关系。

输出格式

P行,每行一个 YesNo。表示第 i 个询问的答案为“具有”或“不具有”亲戚关系。

输入输出样例

输入 #1
6 5 3
1 2
1 5
3 4
5 2
1 3
1 4
2 3
5 6
输出 #1
Yes
Yes
No

说明/提示

## 思路

用并查集维护连通:find 找根,unite 合并集合。

## 步骤

1. 初始化每个元素的父节点为自己。
2. 按操作合并或查询是否同根。
3. 输出题面要求的连通信息。