题目描述

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

规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。

输入

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

以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Mi和Mj具有亲戚关系。

接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。

输出

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

样例输入

6 5 3
1 2
1 5
3 4
5 2
1 3
1 4
2 3
5 6

样例输出

Yes
Yes
No

并查集基本格式代码

#include<bits/stdc++.h>
using namespace std;
int s[100005];
//初始化函数
void init(){for(int i = 0 ; i <= x ; i ++)s[i] = i;
}
//查询函数
int find(int x){if(s[x] == x)return s[x];else{//剪枝 s[x] = find(s[x]);//父节点设为根节点 return s[x];//返回父节点 } }
//合并函数
void merge(int a,int b){int a1 = find(a);int a2 = find(b);if(a1 != a2) {s[a1]=b1;}
}
int main(){ios::sync_with_stdio(false);while(cin){init();merge(,);}
return 0 ;
}

AC代码

#include<bits/stdc++.h>using namespace std;
int s[100005];
void init(int x){for(int i=1;i<=x;i++)s[i]=i;
}
int find(int x){if(s[x]==x)return s[x];else{s[x]= find(s[x]);return s[x];}}
void merge(int a,int b){int a1=find(a);int b1=find(b);if(a1!=b1)s[a1]=b1;
}
int main(){ios::sync_with_stdio(false);int n,m,p;while(cin>>n>>m>>p){init(n);int a,b;for(int i=0;i<m;i++){cin>>a>>b;merge(a,b);}for(int i=0;i<p;i++){cin>>a>>b;if(find(a)==find(b))cout<<"Yes"<<endl;elsecout<<"No"<<endl; }}return 0 ;
}

亲戚关系(并查集(YYOJ相关推荐

  1. P1551 亲戚(并查集)

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

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

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

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

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

  4. P1551 亲戚 (并查集)

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

  5. 1249. 亲戚(并查集)

    文章目录 Question Ideas Code Question 或许你并不知道,你的某个朋友是你的亲戚. 他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子. 如果能得到完整的家谱,判断两个人是否 ...

  6. zcmu 1437 A Bug's Life(关系并查集)

    [题目] 1437: A Bug's Life Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 112  Solved: 49 [Submit][Sta ...

  7. 漫画:什么是 “并查集” ?

    作者 | 封承成 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅1 ...

  8. 什么是 “并查集” ?

    导语:并查集是一种精巧的算法,本身并不难理解,却很常用,在许多场景下都能找到并查集的身影. 本文作者封承成,年仅12岁,非常感谢他的投稿. 并查集是什么 并查集,是一种判断"远房亲戚&quo ...

  9. 2021算法竞赛入门班第三节课【堆、栈、队列、并查集】等习题

    目录 新建 Microsoft Office Word 文档[小根堆] 加边的无向图[并查集] 好串[栈 / 括号匹配] [NOIP2004]合并果子[小根堆] DongDong认亲戚[并查集] 新建 ...

  10. 数据结构之并查集:并查集的介绍与Python代码实现——18

    并查集的介绍 并查集(Union-find)数据结构也称作合并查找集(Merge-find set)或者不相交集数据结构(disjoint-set data structure),它是一种记录了由一个 ...

最新文章

  1. windows程序移植linux
  2. CentOS下的账户管理
  3. log4j每天,每小时产生一日志文件
  4. java调用接口失败重试,httpclient接口测试中重试控制器设置
  5. sklearn gridsearchcv_Sklearn与Tensorflow的完美结合
  6. python获取月份字符串_Python时间获取及转换知识汇总
  7. 大厂程序员年薪_年薪25万一线大厂程序员,年薪10万三线城市大专讲师,怎么选...
  8. android开发实现选择列表,Android使用RecyclerView实现列表数据选择操作
  9. SQL不同服务器数据库之间的数据操作整理(完整版)
  10. asp.net cookies
  11. c语言指针动态分配数组长度,C语言安全之数组长度与指针实例解析
  12. mysql 指定ip段 掩码_IP分配及网段划分
  13. 如何用jsp和mysql实现简单的登陆功能
  14. mysql 基础教程 很全
  15. Extjs4.0 视频教程
  16. STM32的硬件SPI驱动AD7124的方法
  17. 关于swf转fla 软件的间题
  18. Linux NTP服务器配置
  19. 第1章 弗洛依德——精神分析
  20. 解决易语言出现死循环代码错误提示

热门文章

  1. 学习jQuery这一篇就够了
  2. Phonetic symbol 辅音 - 清辅音 -- /f/
  3. 用计算机亩换算成平方,公倾,平方米,英亩,市亩,平方公里等常见面积单位转换在线计算器_三贝计算网_23bei.com...
  4. JSD-2204-JDBC-SpringBoot-Day11
  5. NoSQL 与大数据
  6. m1MacBook Pro pycharm打字卡顿问题解决
  7. android 经纬度转物理地址,微信获取用户的经纬度与物理地址转换
  8. 《深入理解分布式事务》,初识分布式......
  9. 【福利】免费领取企业信息查询两年VIP会员
  10. php字符串函数处理emoji,PHP中处理内容含有emoji表情的几种方式