题目

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

输入格式:
输入第一行给出一个正整数N(2 ≤ N ≤10 4 ),随后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

分析

全局变量 flag,当深度遍历结构题数组的时候,深度<=5就找到父母相同的了,就需要置flag=0,代表是近亲,不能结婚
注意:父母的性别也要写进去。

代码

代码如下(示例):

#include <iostream>
using namespace std;struct node{int valid; // 判断这个编号是否输入过 int ma;// 妈妈 int fa; // 爸爸int sex;
}P[100000];
int n,k,flag;// 深度优先遍历查看是否有五代以内的近亲
void dfs(int a,int b,int dep)
{if(!flag) return; // 这是当前面已经判断为近亲了,就直接返回if(a==-1 || b==-1) return; // 错误1:还有可能是-1的情况 if(a==b){if(dep<=5 )flag = 0;return;}if(dep>5) return;if(!P[a].valid || !P[b].valid) return ;// 错误2:当该节点为父母节点没有输入过的时候,就不能继续遍历 dfs(P[a].fa,P[b].fa,dep+1);dfs(P[a].fa,P[b].ma,dep+1);dfs(P[a].ma,P[b].fa,dep+1);dfs(P[a].ma,P[b].ma,dep+1);
}int main()
{for(int i=0;i<100000;i++)P[i].valid = 0;cin>>n;int nb,sex,fa,ma;for(int i=0;i<n;i++){scanf("%d %c %d %d",&nb,&sex,&fa,&ma);if(sex=='M')P[nb].sex = 1;elseP[nb].sex = 0;P[nb].fa = fa;P[nb].ma = ma;P[nb].valid = 1;  // 为他的爸爸妈妈性别赋值if(fa!=-1) P[fa].sex = 1;if(fa!=-1) P[ma].sex = 0; }cin>>k;for(int i=0;i<k;i++){scanf("%d %d",&fa,&ma);if(P[fa].sex == P[ma].sex)cout<<"Never Mind"<<endl;else{flag = 1;dfs(fa,ma,1);if(flag)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}}return 0;
}

L2-016 愿天下有情人都是失散多年的兄妹 (25 分)深度优先遍历相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. PTA:7-106 愿天下有情人都是失散多年的兄妹 (25分)(bfs,dfs)

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

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

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

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

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

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

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

最新文章

  1. 2010年7月微软最有价值专家(MVP)当选名单
  2. python缺失值填充均值法_pandas 使用均值填充缺失值列的小技巧分享
  3. 训练dnn_[预训练语言模型专题] MTDNN(KD) : 预训练、多任务、知识蒸馏的结合
  4. 【CodeForces】700 D. Huffman Coding on Segment 哈夫曼树+莫队+分块
  5. pythonjson格式化输出_pythonjson格式化输出_Python json格式化打印实现过程解析
  6. Unity3D手机游戏开发
  7. 微型计算机的主机常用部件,组成微型机主机的部件是
  8. 日常问题:上传接口报错
  9. 麻省理工学院公开课:算法导论 观后感 —— 性能是一种货币
  10. Python(2)——根据英文字符输出中文星期
  11. 黄瓜客户端java_建造者模式
  12. 自增运算,阴间代码《奇思妙想二》
  13. 浅谈软件项目规模估计——怎么估?
  14. Clion 调教记录
  15. 仿射密码 python实现
  16. 《炬丰科技-半导体工艺》薄膜晶体管中的光刻技术
  17. 程序员常用英文词汇、短语整理
  18. Unity3d UGUI基础控件使用(一)
  19. 截图工具当前未在计算机上运行。请重新启动计算机,然后重试。如果问题持续存在,请与你的系统管理员联系。
  20. 20岁的计算机系学生 表情包,毕竟我才二十岁表情包 - 毕竟我才二十岁微信表情包 - 毕竟我才二十岁QQ表情包 - 发表情 fabiaoqing.com...

热门文章

  1. matlab 求约当阵,矩阵约当标准化的一个新方法
  2. 雅虎市值_也许不算雅虎! 刚出来
  3. HTML超大图片加载显示解决方案--图片切割转换成瓦片地图(BaiduMapTileCutter)
  4. html怎么统计总访问量,如何实现对网站页面访问量的统计?
  5. Windows快速查看电脑显卡及处理器型号的方法
  6. 该知道的都知道 不知道的慢慢了解 MySQL数据库操作
  7. [每日一氵]上古年代的 Visual Studio2015 安装
  8. 华为手机克隆在哪个文件夹_华为手机克隆软件怎么使用?手机克隆APP操作步骤以及下载地址详细介绍[多图]...
  9. pythonqq机器人酷q_基于NoneBot的QQ聊天机器人一
  10. 【CC2640R2F】香瓜CC2640R2F之LCD