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

时间限制: 200 ms           内存限制: 64 MB        代码长度限制: 16 KB

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

输入格式:

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

#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
struct Person {int fatherid=-1;int motherid=-1;char sex;
}people[100000];bool DFS(int xid, int yid, int m) {if (xid == -1 || yid == -1 || m>5) return false;int xf = people[xid].fatherid;int xm = people[xid].motherid;int yf = people[yid].fatherid;int ym = people[yid].motherid;if (xf != -1) {if (xf == yf) return true;}else {if (xm != -1)if (xm == ym) return true;}if (DFS(xf, yf, m+1)) return true;if (DFS(xf, ym, m+1)) return true;if (DFS(xm, yf, m+1)) return true;if (DFS(xm, ym, m+1)) return true;return false;
}void getAnswer(int x, int y) {if (people[x].sex == people[y].sex) { printf("Never Mind\n"); return; }int m = 2;bool in5 = DFS(x, y, m);if (in5) printf("No\n");else printf("Yes\n");
}int main() {int n;scanf("%d", &n);int i;for (i = 0; i<n; i++) {int id;scanf("%d", &id);scanf(" %c %d %d", &people[id].sex, &people[id].fatherid, &people[id].motherid);people[people[id].fatherid].sex = 'M';people[people[id].motherid].sex = 'F';}int k;scanf("%d", &k);for (i = 0; i<k; i++) {int x, y;scanf("%d%d", &x, &y);getAnswer(x, y);}return 0;
}

数据结构-树-愿天下有情人都是失散多年的兄妹相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  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. Spring Webflux: Kotlin DSL [片断]
  2. [Github]watch和star的区别
  3. 大数据实训记录(一)
  4. [云炬python3玩转机器学习]6-2模拟梯度下降法
  5. 解决ftp上传connection reset错误
  6. 工业以太网的冗余功能有哪些?
  7. 如何revert一个merged branch上所有的改动
  8. Tomcat主页404错误
  9. 注解返回html页面,【提问】ajax请求返回整个html页面
  10. H264所采用的指数格伦布熵编码算法原理及应用
  11. phthon学习笔记(3)
  12. Django之验证码的生成和使用
  13. gbase数据库中快速备份数据用法
  14. QQ界面的MSN聊天软件
  15. 中基鸿业如何投资理财
  16. cocos2d-x android 直接加载下载到sd的zip里的资源文件(一)
  17. 『时代』杂志:元宇宙将改变世界;健身教练:AI让我丢工作!有话说北欧人工智能夏令营资料大公开;深度学习书籍TOP5 | ShowMeAI资讯日报
  18. 总结几点学习模电难的原因
  19. 生命早期肠道微生物组和疫苗功效
  20. 初创公司如何选择企业级服务器配置

热门文章

  1. 笔记本连无线网显示无法连接服务器,笔记本无法连接WIFI,提示:无法连接到此网络。...
  2. 微软蓝牙鼠标3600拆解
  3. java常见面试题总结2
  4. win7定时关机命令_只需9步教你轻松设置win7系统定时关机,无需任何工具
  5. CSPS2019Day1T2(括号树)题解
  6. 从CAP 到编程语言的猜想
  7. HCIA—网络基本知识—双绞线(文字 + 图解)
  8. 全球三大计算机病毒爆发事件,全球爆发勒索病毒 十大恐怖电脑病毒排行榜(3)...
  9. python获取当前计算机cpu数量
  10. 应聘客户端主程需做哪些准备