题目:

呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?

输入格式:

输入第一行给出一个正整数N(2 ≤ N ≤104),随后N行,每行按以下格式给出一个人的信息:

本人ID 性别 父亲ID 母亲ID

其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为-1

接下来给出一个正整数K,随后K行,每行给出一对有情人的ID,其间以空格分隔。

注意:题目保证两个人是同辈,每人只有一个性别,并且血缘关系网中没有乱伦或隔辈成婚的情况。

输出格式:

对每一对有情人,判断他们的关系是否可以通婚:如果两人是同性,输出Never Mind;如果是异性并且关系出了五服,输出Yes;如果异性关系未出五服,输出No

输入样例:

24
00001 M 01111 -1
00002 F 02222 03333
00003 M 02222 03333
00004 F 04444 03333
00005 M 04444 05555
00006 F 04444 05555
00007 F 06666 07777
00008 M 06666 07777
00009 M 00001 00002
00010 M 00003 00006
00011 F 00005 00007
00012 F 00008 08888
00013 F 00009 00011
00014 M 00010 09999
00015 M 00010 09999
00016 M 10000 00012
00017 F -1 00012
00018 F 11000 00013
00019 F 11100 00018
00020 F 00015 11110
00021 M 11100 00020
00022 M 00016 -1
00023 M 10012 00017
00024 M 00022 10013
9
00021 00024
00019 00024
00011 00012
00022 00018
00001 00004
00013 00016
00017 00015
00019 00021
00010 00011

输出样例:

Never Mind
Yes
Never Mind
No
Yes
No
Yes
No
No

个人理解:该题目初看应该毫无思路(本人如此,不然也不会写题解加深印象,当然也是看来题解的) ,本题目一看肯定是要用到结构体的,那么结构体中应该有哪些变量那,毫无疑问性别肯定要有的,不然不好判断(万一同性呢,嘿),其次他们的父母的id应该也要,这样子是为了判断这对情侣会不会是在五代中。结构体ok了之后,那么就要判断是不是五代了,如何判断呢,就是看他们五代内的父母的id有没有一样的,一样那就是了,当然还有一种特殊情况,就是其中一方的父母不考察了,深读题意是可以理解出来的。既然如此就开始代码吧。

#include<bits/stdc++.h>
using namespace std;
typedef struct{int sex;int father;int mother;
}node;
node s[100000];//数组开大,我就是之前开小了,结构数据点一直没有过去
int check(int x,int y,int c)
{if(x==-1||y==-1||c>5)return 1;//超过五代,或者是其中一方父母不考察了if(x==y)return 0;return check(s[x].father,s[y].mother,c+1)&&check(s[x].mother,s[y].father,c+1)&&check(s[x].father,s[y].father,c+1)&&check(s[x].mother,s[y].mother,c+1);
}
int main()
{char ch;int n,id,fa,mo,a,b;cin>>n;//全部初始化为-1for(int i=0;i<100000;i++){s[i].sex=-1;s[i].father=-1;s[i].mother=-1;}for(int i=0;i<n;i++){cin>>id>>ch>>fa>>mo;s[id].father=fa;s[id].mother=mo;if(ch=='M'){//男=0;s[id].sex=0;}else s[id].sex=1;if(fa!=-1)s[fa].sex=0;if(mo!=-1)s[mo].sex=1;}int k;cin>>k;for(int i=0;i<k;i++){cin>>a>>b;if(s[a].sex==s[b].sex)cout<<"Never Mind"<<endl;else{if(check(a,b,1))cout<<"Yes"<<endl;else cout<<"No"<<endl;}}return 0;
}

PAT题目详解-----愿天下有情人都是失散多年的兄妹相关推荐

  1. 天梯赛:L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

    题目详情 - L2-016 愿天下有情人都是失散多年的兄妹 (25 分) (pintia.cn) 题解:对于每个给出的编号进行层序遍历,把遍历到的元素存进集合里.如果两个集合存在交集,就代表它们存在公 ...

  2. 【天梯赛L2-016】愿天下有情人都是失散多年的兄妹(递归)

    题目链接 L2-016 愿天下有情人都是失散多年的兄妹(25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就 ...

  3. PAT L2-016. 愿天下有情人都是失散多年的兄妹

    L2-016. 愿天下有情人都是失散多年的兄妹 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 完全转载:https://blo ...

  4. bfs( L2-016 愿天下有情人都是失散多年的兄妹 (25 分))

    这一题巨坑!!! 原题链接 L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母 ...

  5. 7-57 愿天下有情人都是失散多年的兄妹 (25 分)(深搜)

    7-57 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...

  6. 【CCCC】L2-016 愿天下有情人都是失散多年的兄妹 (25分),,搜索公共祖先

    problem L2-016 愿天下有情人都是失散多年的兄妹 (25分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚. ...

  7. 7-13 愿天下有情人都是失散多年的兄妹 (25 分)

    7-13 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...

  8. L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(C语言)(并查集)(dfs)(测试点坑)

    题目 L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请 ...

  9. 天梯赛 L2-016 愿天下有情人都是失散多年的兄妹 (25 分)[测试点1 3 4][未填坑]

    L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 思路: 在录入的时候用map和结构体储存性别,父母ID, 判断的时候先判断性别,再用dfs搜索第一个人五服之内的关系,并将关系任务ID存储到 ...

最新文章

  1. 万字长文,结合电商支付业务一文搞懂DDD
  2. Input.GetTouch 获取触摸
  3. python编程思维导图_用来梳理 Python 编程核心知识15张思维导图
  4. enquire.js-响应css媒体查询的轻量级javascript库
  5. Struts-config.xml配置文件《action-mappings》元素的详解
  6. DPDK-VPP 学习笔记-06 bond 链路聚合 LACP
  7. java异步编程书籍_《Java异步编程实战》(翟陆续)【摘要 书评 试读】- 京东图书...
  8. Android Facebook登录、分享;ins分享
  9. 8个免费、高质量PPT素材网站,值得收藏
  10. android优酷视频黑屏,为什么优酷视频黑屏?优酷视频黑屏的原因与解决方法
  11. php页面强制横屏,Css实现手机端页面强制横屏(仅适用与一屏页面)
  12. CNS服务器搭建(配合百度直连)
  13. play 项目 入到Idea
  14. python海龟绘图实例教程-python海龟turtle绘图实例教程
  15. 【问题解决】win服务器磁盘初始化
  16. Xtrabackup 增量备份
  17. 学习日语应该先掌握哪些内容?
  18. C语言:求100以内的素数
  19. 数据化管理为什么对企业那么重要?
  20. iPhone设置代收 阿里云邮

热门文章

  1. 倒计时2天!2022腾讯全球数字生态大会大数据专场内容抢先看
  2. 台式计算机连接,台式电脑连接网络步骤
  3. 记录几个免费质量高的图库视频库
  4. 【数据库】FaceDataset常用的人脸数据库
  5. ibm邮箱连接不到服务器,IBM i 安全邮件配置和常见故障排除方法
  6. python字体类型arial_python-3.x - 为什么我的font.name属性不影响使用Python-pptx制作的ppt上的字体? 我总是得到arial字体 - 堆栈内存溢出...
  7. linux shell ifs,Shell 的 IFS 变量
  8. 《程序员的自我修养》笔记
  9. 2018年最新python视频教程学习建议百度云分享
  10. python爬取股票数据,以上证指数为例,可以爬取任何股票,保存为temp.csv文件