1249. 亲戚(并查集)
文章目录
- 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. 亲戚(并查集)相关推荐
- P1551 亲戚 并查集
P1551 亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么 ...
- 并查集——亲戚(洛谷 P1551)
题目选自洛谷P1551 并查集入门题目,简单有趣的例子了解并查集的使用 主要分为三个操作: 1)初始化 没有什么说的,就是用下标当做标号. 2)合并操作 如果两个关系的"老大"不一 ...
- 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例
本文实例讲述了C++并查集亲戚(Relations)算法.分享给大家供大家参考.具体分析如下: 题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女 ...
- 并查集应用-判断亲戚关系
题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如 ...
- P1551 亲戚(并查集)
亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲 ...
- 亲戚关系(并查集(YYOJ
题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是 ...
- 每日一题——洛谷 P1551 亲戚 (并查集)
大家好,我是爬行系,今天打卡并查集相关例题 文章目录 并查集 1.概念 2.模板 例题 1.题目描述 2.AC代码 更多练习题 总结 并查集 1.概念 并查集的思想是用一个数组表示了整片森林(pare ...
- 并查集专题(亲戚,格子游戏,银河英雄传说)
文章目录 序言 正文 亲戚 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 输入 输出 样例输入 样例输出 讲解 Wrong Answer Code Accepted Code ...
- 【图】【并查集】亲戚
亲戚(relation.cpp) 时间限制: 1 Sec 内存限制: 64 MB 题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易. 现在给出某个亲戚关系图,求任意给出的两个人 ...
- 洛谷P1551 亲戚(并查集)
题目链接 思路: 并查集的模板题目 关于并查集相关知识可以看此博客 AC代码 #include<iostream> #include<cstdio> #include<a ...
最新文章
- 再学 GDI+[11]: DrawCurve - 绘制曲线
- JavaScript —— 如何判断一个非数字输入
- php定界符EOF讲解
- Ibatisnet示例:npetshop学习一
- 3.5 矩阵 $4$ 个空间和方程 $A\mathbf{x}=\mathbf{y}$ 的关系
- Android 打开系统应用,如:拨号、短信、相机、相册等功能
- linux虚拟机怎么恢复出厂设置_Vmware安装linux后一些初始化配置
- java判断字符串不为空_Java判断字符串是否为空的方法
- 大概都能懂的Eviews教程:二(转载)
- c语言字符统计程序源代码,c语言程序实例大全-220个详细程序源代码.rar
- 如何在电脑上开启2个微信(如何进行应用分身)
- 如何用计算机制作海报,用电脑怎么做海报_电脑用什么软件做海报
- 百度:一盗功成万网枯
- 开源免费的流程图工具推荐 - draw.io
- python人工智能方向入门书籍推荐_python 人工智能 入门要看那些理论书
- 苹果任性,降低iPhone电池容量,用户需要多买个充电宝奶妈
- Git 中 cat 的使用
- Apache Log4j 2.0-rc1 发布
- 面试题之2个有序数组求合并后的中位数
- Pillar-based Object Detection for Autonomous Driving(基于柱体的自动驾驶目标检测)论文笔记
热门文章
- 王凤英正式加入小鹏汽车出任总裁
- 弹性布局flex-basis的理解
- 服务器网卡默认都支持PXE吗,关于以太网网卡密码之PXE无盘启动(一)
- Creating Add-in Hooks (C#)
- Introducing PMDK into PostgreSQL
- 阿里实习3个月成功转正,总结了55道学习真题笔记。
- c c 语言写的四六级词汇系统,2020年上半年大学英语四级单词表c开头:队长
- 【查找算法】6种常见的查找算法简述及Python代码实现
- TI-RTOS Kernel(SYS/BIOS)---同步模块
- 淮阴工学院计算机期末占60,淮阴工学院数据结构期末样卷.doc