【并查集】亲戚(Relations)
题目: 亲戚(Relations)
或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥的表姐的孙子。如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及.在这种情况下,最好的帮手就是计算机。
为了将问题简化,你将得到一些亲戚关系的信息,如同Marry和Tom是亲戚,Tom和B en是亲戚,等等。从这些信息中,你可以推出Marry和Ben是亲戚。请写一个程序,对于我们的关心的亲戚关系的提问,以最快的速度给出答案。
参考输入输出格式 输入由两部分组成。
第一部分以N,M开始。N为问题涉及的人的个数(1 ≤ N ≤ 20000)。这些人的编号为1,2,3,…,N。下面有M行(1 ≤ M ≤ 1000000),每行有两个数ai, bi,表示已知ai和bi是亲戚.
第二部分以Q开始。以下Q行有Q个询问(1 ≤ Q ≤ 1 000 000),每行为ci, di,表示询问ci和di是否为亲戚。
对于每个询问ci, di,若ci和di为亲戚,则输出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
如果这道题目不用并查集,而只用链表或数组来存储集合,那么效率很低,肯定超时。
#include <iostream>
#include <cstdio>using namespace std;int father[20010]; //father[i]表示i的父亲int Find(int a) //查找其父亲并压缩路径
{if(father[a] != a)father[a] = Find(father[a]);return father[a];
}int main()
{int N,M;int a,b;scanf("%d%d",&N,&M);//给每个元素建立一个集合for(int i = 1 ; i <= N ; ++i)father[i] = i;//合并for(int i = 0 ; i < M ; ++i){scanf("%d%d",&a,&b);a = Find(a);b = Find(b);father[a] = b;}//查询scanf("%d",&M);while(M--){scanf("%d%d",&a,&b);a = Find(a);b = Find(b);if(a == b)printf("YES\n");elseprintf("NO\n");}return 0;
}
转载于:https://www.cnblogs.com/whongfei/archive/2013/02/14/5247004.html
【并查集】亲戚(Relations)相关推荐
- 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例
本文实例讲述了C++并查集亲戚(Relations)算法.分享给大家供大家参考.具体分析如下: 题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女 ...
- 并查集——亲戚(洛谷 P1551)
题目选自洛谷P1551 并查集入门题目,简单有趣的例子了解并查集的使用 主要分为三个操作: 1)初始化 没有什么说的,就是用下标当做标号. 2)合并操作 如果两个关系的"老大"不一 ...
- 并查集应用-判断亲戚关系
题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如 ...
- P1551 亲戚 并查集
P1551 亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和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 ...
最新文章
- spark指定python版本_如何将正常的Python应用程序正确转换为PySpark版本
- 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
- hdu oj1096题解
- 为什么我的SQL server 在附加数据库后,数据库总是变成了只读?
- nginx如何开启debug日志及相关配置
- php流导出excel内存溢出,phpExcel导出大量数据出现内存溢出错误的解决方法
- jpa transaction 回滚_我遇到的JPA中事务回滚的问题
- 车厢调度(信息学奥赛一本通-T1357)
- GridView类容器中的DropDownList联动
- uboot第一阶段详细分析
- 非极大值抑制_OpenCV非极大值抑制bug
- 开题报告:基于java校园学校球馆运动场地预约系统 毕业设计论文开题报告模板
- Nessus插件包20220925
- volatility常用的命令
- 服务器端返回的状态码是什么意思
- 3600万中国人在抖音“上清华”。
- B BL BLX BX详解
- css清除浮动的四种方法(详细)
- Java Jsp+Servlet+mysql实现的火车票查询预定系统(管理员/普通用户 功能:火车票查询、订票付款退票改签、火车票信息管理、线路管理、站点管理等)
- python类与类的关系_python类与类的关系