题目: 亲戚(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)相关推荐

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

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

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

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

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

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

  4. P1551 亲戚 并查集

    P1551 亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和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. spark指定python版本_如何将正常的Python应用程序正确转换为PySpark版本
  2. 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
  3. hdu oj1096题解
  4. 为什么我的SQL server 在附加数据库后,数据库总是变成了只读?
  5. nginx如何开启debug日志及相关配置
  6. php流导出excel内存溢出,phpExcel导出大量数据出现内存溢出错误的解决方法
  7. jpa transaction 回滚_我遇到的JPA中事务回滚的问题
  8. 车厢调度(信息学奥赛一本通-T1357)
  9. GridView类容器中的DropDownList联动
  10. uboot第一阶段详细分析
  11. 非极大值抑制_OpenCV非极大值抑制bug
  12. 开题报告:基于java校园学校球馆运动场地预约系统 毕业设计论文开题报告模板
  13. Nessus插件包20220925
  14. volatility常用的命令
  15. 服务器端返回的状态码是什么意思
  16. 3600万中国人在抖音“上清华”。
  17. B BL BLX BX详解
  18. css清除浮动的四种方法(详细)
  19. Java Jsp+Servlet+mysql实现的火车票查询预定系统(管理员/普通用户 功能:火车票查询、订票付款退票改签、火车票信息管理、线路管理、站点管理等)
  20. python类与类的关系_python类与类的关系

热门文章

  1. GIS案例练习-----------第八天
  2. 从零基础入门Tensorflow2.0 ----二、4.3 wide deep 模型(多输入)
  3. 多光谱、高光谱与雷达数据等产品级划分标准
  4. 关于重分类工具的其他讨论
  5. ajax如何向action发送数据的
  6. Flink+Hudi 构架湖仓一体化解决方案
  7. 十分钟走进大数据世界
  8. 能解决 80% 故障的排查思路
  9. Android开发之贝塞尔曲线进阶篇(仿直播送礼物,饿了么购物车动画)
  10. 高级编程和编程规范总结