文章目录

  • Question
  • Ideas
  • Code

Question

或许你并不知道,你的某个朋友是你的亲戚。

他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。

如果能得到完整的家谱,判断两个人是否是亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及。

在这种情况下,最好的帮手就是计算机。

为了将问题简化,你将得到一些亲戚关系的信息,如Marry和Tom是亲戚,Tom和Ben是亲戚,等等。

从这些信息中,你可以推出Marry和Ben是亲戚。

请写一个程序,对于我们的关于亲戚关系的提问,以最快的速度给出答案。

输入格式
输入由两部分组成。

第一部分以 N,M
开始。N
为问题涉及的人的个数。这些人的编号为 1,2,3,…,N
。下面有 M
行,每行有两个数 ai,bi
,表示已知 ai
和 bi
是亲戚。

第二部分以 Q
开始。以下 Q
行有 Q
个询问,每行为 ci,di
,表示询问 ci
和 di
是否为亲戚。

输出格式
对于每个询问 ci,di
,输出一行:若 ci
和 di
为亲戚,则输出“Yes”,否则输出“No”。

数据范围
1≤N≤20000
,
1≤M≤106
,
1≤Q≤106
输入样例:
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

Ideas

// 返回x的根节点+路径压缩
int find(int x)
{if (x != p[x]) p[x] = find(p[x]);return p[x];
}p[find(a)] = find(b); // 合并集合

Code

#include <iostream>using namespace std;
const int N = 20010;
int p[N]; // p[x]存储x的父节点// 返回x的根节点+路径压缩
int find(int x)
{if (x != p[x]) p[x] = find(p[x]);return p[x];
}int main()
{int n, m;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++) p[i] = i; //下标从1开始while(m --){int a, b;scanf("%d%d", &a, &b);p[find(a)] = find(b); // 合并集合}scanf("%d", &m);while(m --){int a, b;scanf("%d%d",&a, &b);if (find(a) == find(b)) puts("Yes");else puts("No");}return 0;
}

1249. 亲戚(并查集)相关推荐

  1. P1551 亲戚 并查集

    P1551 亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么 ...

  2. 并查集——亲戚(洛谷 P1551)

    题目选自洛谷P1551 并查集入门题目,简单有趣的例子了解并查集的使用 主要分为三个操作: 1)初始化 没有什么说的,就是用下标当做标号. 2)合并操作 如果两个关系的"老大"不一 ...

  3. 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例

    本文实例讲述了C++并查集亲戚(Relations)算法.分享给大家供大家参考.具体分析如下: 题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女 ...

  4. 并查集应用-判断亲戚关系

    题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如 ...

  5. P1551 亲戚(并查集)

    亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲 ...

  6. 亲戚关系(并查集(YYOJ

    题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是 ...

  7. 每日一题——洛谷 P1551 亲戚 (并查集)

    大家好,我是爬行系,今天打卡并查集相关例题 文章目录 并查集 1.概念 2.模板 例题 1.题目描述 2.AC代码 更多练习题 总结 并查集 1.概念 并查集的思想是用一个数组表示了整片森林(pare ...

  8. 并查集专题(亲戚,格子游戏,银河英雄传说)

    文章目录 序言 正文 亲戚 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 输入 输出 样例输入 样例输出 讲解 Wrong Answer Code Accepted Code ...

  9. 【图】【并查集】亲戚

    亲戚(relation.cpp) 时间限制: 1 Sec  内存限制: 64 MB 题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易. 现在给出某个亲戚关系图,求任意给出的两个人 ...

  10. 洛谷P1551 亲戚(并查集)

    题目链接 思路: 并查集的模板题目 关于并查集相关知识可以看此博客 AC代码 #include<iostream> #include<cstdio> #include<a ...

最新文章

  1. 再学 GDI+[11]: DrawCurve - 绘制曲线
  2. JavaScript —— 如何判断一个非数字输入
  3. php定界符EOF讲解
  4. Ibatisnet示例:npetshop学习一
  5. 3.5 矩阵 $4$ 个空间和方程 $A\mathbf{x}=\mathbf{y}$ 的关系
  6. Android 打开系统应用,如:拨号、短信、相机、相册等功能
  7. linux虚拟机怎么恢复出厂设置_Vmware安装linux后一些初始化配置
  8. java判断字符串不为空_Java判断字符串是否为空的方法
  9. 大概都能懂的Eviews教程:二(转载)
  10. c语言字符统计程序源代码,c语言程序实例大全-220个详细程序源代码.rar
  11. 如何在电脑上开启2个微信(如何进行应用分身)
  12. 如何用计算机制作海报,用电脑怎么做海报_电脑用什么软件做海报
  13. 百度:一盗功成万网枯
  14. 开源免费的流程图工具推荐 - draw.io
  15. python人工智能方向入门书籍推荐_python 人工智能 入门要看那些理论书
  16. 苹果任性,降低iPhone电池容量,用户需要多买个充电宝奶妈
  17. Git 中 cat 的使用
  18. Apache Log4j 2.0-rc1 发布
  19. 面试题之2个有序数组求合并后的中位数
  20. Pillar-based Object Detection for Autonomous Driving(基于柱体的自动驾驶目标检测)论文笔记

热门文章

  1. 王凤英正式加入小鹏汽车出任总裁
  2. 弹性布局flex-basis的理解
  3. 服务器网卡默认都支持PXE吗,关于以太网网卡密码之PXE无盘启动(一)
  4. Creating Add-in Hooks (C#)
  5. Introducing PMDK into PostgreSQL
  6. 阿里实习3个月成功转正,总结了55道学习真题笔记。
  7. c c 语言写的四六级词汇系统,2020年上半年大学英语四级单词表c开头:队长
  8. 【查找算法】6种常见的查找算法简述及Python代码实现
  9. TI-RTOS Kernel(SYS/BIOS)---同步模块
  10. 淮阴工学院计算机期末占60,淮阴工学院数据结构期末样卷.doc