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

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

输入格式:

输入第一行给出一个正整数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

DFS就和树的先序遍历,好理解是好理解,就是代码不太会用,也不太会用到题目中,不熟练,DFS的代码板块理解可以参考这篇文章:DFS(深度优先搜索算法)

#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
const int maxn = 100002;
bool v[maxn];   //判断是否访问
typedef struct peo
{int id;bool sex;
}peo;
vector<int> G[maxn];
peo man[maxn];
bool flag;
void dfs(int x,int y)
{if (!y||flag)return;v[x] = 1;for (int k = 0; k < G[x].size(); k++){int u = G[x][k];if (u == -1)continue;if (v[u])   //如果五服以内出现了共同祖先{flag = true;return;}    dfs(u, y - 1);//用y--原地爆炸,懂得都懂,就是我不懂,C语言白学}
}
int main()
{int n,m,fa,ma,a;char sexu;int id1, id2;cin >> n;for (int i = 0; i < n; i++){cin >> a >> sexu >> fa >> ma;man[a].id = a;man[a].sex = (sexu == 'M');man[fa].id = fa;man[fa].sex = 1;man[ma].id = ma;man[ma].sex = 0;G[a].push_back(fa);G[a].push_back(ma);}cin >> m;for (int i = 0; i < m; i++){memset(v, 0, sizeof(v));cin >> id1 >> id2;if (man[id1].sex == man[id2].sex)cout << "Never Mind" << endl;else{flag = false;dfs(id1, 5);dfs(id2, 5);if (flag == true)cout << "No" << endl;elsecout << "Yes" << endl;}}return 0;
}

7-1 愿天下有情人都是失散多年的兄妹 --DFS相关推荐

  1. L2-016 愿天下有情人都是失散多年的兄妹 (dfs,离散化)

    L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 因为人的id都是整数,所以这道题可以离散化,也可以不离散化,在此给出两种方式的代码: 非离散化代码: #include<bits/st ...

  2. (L2-016)愿天下有情人都是失散多年的兄妹(dfs)

    题目链接:PTA | 程序设计类实验辅助教学平台 输入样例: 24 00001 M 01111 -1 00002 F 02222 03333 00003 M 02222 03333 00004 F 0 ...

  3. 【PTA-训练day6】L2-016 愿天下有情人都是失散多年的兄妹+ L1-011 帅到没朋友

    L2-016 愿天下有情人都是失散多年的兄妹 - dfs PTA | 程序设计类实验辅助教学平台 思路: 先记录每个人的父母 然后k组查询 分别用dfs搜索两个人的族谱 五服之内出现的人都标记 如果搜 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

    7-2 愿天下有情人都是失散多年的兄妹 样例 24 00001 M 01111 -1 00002 F 02222 03333 00003 M 02222 03333 00004 F 04444 033 ...

最新文章

  1. zipfile java 解压速率,使用java.util.ZipFile在同一层次中解压缩zipfile
  2. 漂浮窗口拖动杂谈(续)
  3. Node --- EventProxy的原理
  4. 优秀!本科生发表Nature论文,直博美国顶尖名校
  5. Linux文件系统:编写一个内核文件系统
  6. 【排序二】选择排序(选择排序堆排序)
  7. php 判断中英文冒号,判断字符串是否含有中英文和数字
  8. 数据解析1:XML解析(1)
  9. MFC 配置OpenCV在Picture控件上绘图
  10. linux adobe flash 安装,Ubuntu 12.10下为Firefox安装Adobe Flash Player
  11. 设计院中心所工作流程 CAD广播电视工程工艺绘图
  12. 优锘:发布一站式数字孪生平台森工厂,打造数字孪生领域的office
  13. 如何取消PPT的密码保护?
  14. aid learning安装应用_极致安卓—Termux/Aid Learning安装宇宙最强VS Code
  15. windows10桌面_Windows桌面美化记(一)这可能是你看过最详细的美化教程
  16. 1063 Set Similarity (25 分) java 题解
  17. git 如何回退版本(通俗易懂,简单上手)
  18. Linux 压缩软件的使用
  19. [敏捷开发实践] 使用RACI Matrix划分敏捷团队的RR
  20. 开平方_复数有效值+角度的verilog代码

热门文章

  1. FAT32文件系统学习(1) —— BPB的理解
  2. 四元数旋转表达(Hamilton notation JPL notation)
  3. cdrom是什么意思_开启电脑时出现CDROM是什么意思
  4. 李佩:阿里本地生活线上线下融合场景中的图像检测技术
  5. 不上火勤眨眼远离干眼症
  6. 关于计算机设计的英语作文,计算机专业设计英文参考文献 计算机专业设计专著类参考文献有哪些...
  7. GAN入门实例【个人理解】
  8. 一年级计算机算文具吗,一年级老师说,用这样文具的孩子,课堂上都没有认真听讲...
  9. phantomjs selenium实现刷搜索引擎,刷百度来路,刷点击,真实有效果
  10. 【图解算法】彻底搞懂(括号匹配)——图解带你直击本质