亲戚(relation)

时间限制: 1 Sec  内存限制: 128 MB

题目描述

或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。如果能得到完整的家谱,判断两个人是否是亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及。在这种情况下,最好的帮手就是计算机。为了将问题简化,你将得到一些亲戚关系的信息,如Marry和Tom是亲戚,Tom和Ben是亲戚,等等。从这些信息中,你可以推出Marry和Ben是亲戚。请写一个程序,对于我们的关于亲戚关系的提问,以最快的速度给出答案。

输入

输入由两部分组成。

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

第二部分以Q开始。以下Q行有Q个询问(1≤ Q ≤1000000),每行为ci,dici,di ,表示询问cici 和didi 是否为亲戚。

测试数据比较水

输出

对于每个询问ci,dici,di ,输出一行:若cici 和didi 为亲戚,则输出“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

徐不可说:并查集的经典模板题。第一次写的时候忘记把输入的x先寻找父节点了,这样会导致三角数据输入出错(例如第一组测试数据23 24  忘记先寻找父节点的后果就是程序运行后会使3、4所得的父节点为3、4 输出No而报错 不能实现连通) 更正后就好了。

ac代码如下:

#include<iostream>
using namespace std;
int a[20050];
int find(int q){int p=q;while(a[p]!=p)p=a[p];//这之后可以加一个路径压缩函数return p;
}
int main(){int x,y,n,m,num,w,v;cin>>n>>m;for(int i=1;i<=n;i++)a[i]=i;for(int i=1;i<=m;i++)cin>>x>>y,x=find(x),a[find(x)]=find(y);//key wrong了一次 cin>>num;for(int i=1;i<=num;i++){cin>>w>>v;if(find(w)==find(v)) cout<<"Yes"<<endl;else cout<<"No"<<endl;}
}

其实这道题很久以前就做过,相对而言用并查集来做会简单很多,时间复杂度低,代码也少很多,那个代码就不附了。

亲戚(relation)相关推荐

  1. 【NOIP普及组】1346:【例4-7】亲戚(relation)

    [信奥赛一本通]1346:[例4-7]亲戚 1.[题目描述] 2.[代码] 1.[题目描述] 1346:[例4-7]亲戚(relation) 时间限制: 1000 ms 内存限制: 65536 KB ...

  2. C++:亲戚(relation)

    题目简介: 一道并查集的模板题 题目描述 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子(辈分挺长).如果能得到完整的家谱,判断两个人是否是亲戚应该是可行的 ...

  3. 1346:【例4-7】亲戚(relation)

    开始学并查集! 白书的解释真的是--长且无用 总结:每个集合就是一棵树,以根节点判断是否在同一集合,合并集合就把一棵树的根节点连到另一棵树的根节点上. 除此以外,为防止出现链式结构降低搜索效率,可压缩 ...

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

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

  5. python教材答案编写函数求成绩平均数_学好Python例题之求成绩平均分

    原博文 2019-08-16 21:03 − 例题: 用户输入若干个成绩,求所有成绩的平均值.每输入一个成绩后询问是否继续输入下一个成绩,回答yes就继续输入下一个成绩,回答no就停止输入成绩. 输入 ...

  6. 进击高手【第十二期】并查集

    引入 在一些有 NNN 个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中. 举个例子: 设初 ...

  7. 2022暑初二信息竞赛学习成果分享1

    学习目录1 第一期 (2022/07/11~2022/07/16) Day 1:复习--**STL.二叉堆.二维费用背包** `Morning`--STL复习 [T1. 车站铁轨](http://22 ...

  8. 新概念二册 Lesson 39 Am I all right?我是否痊愈?(复习直接引语变间接引语)

    文章目录 1 课文 2 单词 2.1 operation [ˌɒpəˈreɪʃn] n. 手术 2.2 successful [səkˈsesfl] adj. 成功的 2.3 following [ˈ ...

  9. java制作的亲戚计算器(三姑六婆计算器)

    无聊的时候写的一个swing应用. 直接上代码了,有些地方很乱,后面再看觉得可以精简的很多,因为是挺久之前写的,我也不想改了. 定义的数据文件格式那里有,程序计算功能要依赖于数据文件. 这是数据文件示 ...

最新文章

  1. 苹果手机微信上form表单提交的问题
  2. java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...
  3. 中国最佳广告创意图片_设计一个系统,以帮助赢得最佳创意
  4. java中InvocationHandler 用于实现代理。
  5. 使用IConfigurationSectionHandler在web.config中增加自定义配置
  6. phpStorm 2017.3.1,WebStorm 2017.3.4 最新版本免费注册激活方法
  7. 一个基于ATMEGA128的直流电机抱死程序
  8. win7计算机打开显卡设置在哪,Win7显卡设置在哪里 win7系统如何设置显卡
  9. 解决全部网页木马的技巧
  10. Quartz集群配置报错 This scheduler instance (XXXX) is still active but was recovered by another instance...
  11. C# throw new Exception的使用
  12. 使用virt-install创建虚拟机
  13. 利用tldr工具再也不怕记不住Linux命令
  14. 物联网控制原理与技术--基于Matlab/利用MATLAB进行频域分析(伯德图)的应用(超详细/设计/实验/作业/练习)
  15. 一位高僧的告诫:人在惹祸前,往往有3个征兆,有一个就要警醒!
  16. 基于华为模拟器(ensp)的静态路由配置实验
  17. CKEditor在线编辑器
  18. 微信小程序button按钮无法更改尺寸解决
  19. python并发下载
  20. git从gitHub下载代码

热门文章

  1. 堡塔APP 免费使用教程【图文教程】
  2. 基于python压缩gif图片大小。
  3. 怎么安装aptdaemon模块_安装Pulseaudio模块在Ubuntu中开启蓝牙APTX/LDAC支持
  4. 史上最全网络通讯(IIOT、工业控制、5G、区块链)协议全景图
  5. 微信公众号实现“一键关注”功能
  6. 实现淘宝广告图片切换(display:block/none)
  7. 悉尼大学理学院计算机科学,澳洲悉尼大学理学院中国留学生
  8. 【DFT】可测性设计(一)扫描测试
  9. 于Cd(Ⅲ)金属有机骨框架的新型造影剂Cd-MOF/Gd-DTPA/DMPE-DTPA-Gd-DMPE/
  10. jQuery实现手机号码的验证