L2-016 愿天下有情人都是失散多年的兄妹 (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

这道题好贱啊,很水的一道搜索题遇见好几个坑,首先是父母有了编号,但是后面没有出现,所以你出现了父母就要给他预处理成男女性别还有就是,如果你不一开始把父母处理成-1他会访问默认为零的父母,因为有些父母出现但是数据上不告诉你他父母-1,所以坑死了,一开始没发现就给了俩分。

总之是一道很水的搜索题,开一个标记数组当我搜到一次就+1当在5代内我>=2时就说明有共同祖先不能结婚。

# include <iostream>
# include <numeric>
# include <algorithm>
# include <functional>
# include <list>
# include <map>
# include <set>
# include <stack>
# include <deque>
# include <queue>
# include <vector>
# include <ctime>
# include <cstdlib>
# include <cmath>
# include <string>
# include <cstring>
# include <iomanip>
# include <queue>
# include <cstdio>using namespace std;
int const maxn = 1e5 + 5;
int book[maxn];
int c;
int flag = 0;
struct node
{int fat;int mot;int id;char sex;
}s[maxn];void dfs(int x, int z)
{if(x == -1 || z > 5  || flag ){return ;}book[x]++;if(book[x] >= 2){flag = true;return ;}dfs(s[x].fat, z + 1);dfs(s[x].mot, z + 1);
}
void fun()
{for(int i = 0; i < maxn; i++){s[i].fat = s[i].id = s[i].mot = -1;s[i].sex = 0;}
}int main(int argc, char *argv[])
{fun();int n;cin >> n;for(int i = 0; i < n; i++){int id;char cc;cin >> id;cin >>s[id].sex;cin >> s[id].fat >> s[id].mot;s[id].id = id;s[s[id].fat].sex = 'M';s[s[id].mot].sex = 'F';}int k;cin >> k;for(int i = 0; i < k; i++){int a, b;cin >> a >> b;if(s[a].sex == s[b].sex){cout << "Never Mind" << endl;}else{flag = 0;memset(book, false, sizeof(book));dfs(a, 1);dfs(b, 1);if(flag){cout << "No" << endl;}else{cout << "Yes" << 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. 机器学习评价指标ROC AUC
  2. 皮一皮:是亲爹的操作 ,没错...
  3. windows服务与网页交互_戴尔高级主动式触控笔-PN579X评测:Windows也有好触控
  4. linux之在当前目录下删除不包含aa的文件
  5. 牛客题霸 [两个链表生成相加链表] C++题解/答案
  6. java 泛型嵌套泛型_Java泛型简介–第6部分
  7. 日本京都大学再次斩获诺贝尔奖,对比清华大学,究竟哪里有差距?
  8. 图像优化算法(HE、AHE、CLAHE)简单介绍
  9. 矩池云中Tensorflow指定GPU及GPU显存设置
  10. 和表头对齐 表格_表格技巧—如何在Excel表格中制作三栏表头
  11. dingtalk 推送手机号信息 golang_Python学习第九十六天:Python调用钉钉机器人推送消息...
  12. windows下 MongoDB 导入json文件
  13. kali linux 2.0下安装ssh和metasploit
  14. 最后一周——数模美赛赛前准备总结
  15. winscp是什么软件_避免使用绿色版破解版和不更新的FTP软件
  16. kubernetes networkpolicy网络策略详解
  17. 奇迹网站系统IGC奇迹mu S18网站可视化装备模板
  18. Java String.contains()方法
  19. R语言 CHAR 11
  20. Baumer工业相机堡盟相机如何使用Binning像素合并功能( Binning像素合并功能的优点和行业应用)(C++)(C#)

热门文章

  1. 5 亿播放的汽车狂欢节,这家数据库站 C 位
  2. 药学职称考试考计算机吗,2021药学职称考试人机对话考试怎么考?有没有适合备考的搜题软件?...
  3. 信奥赛一轮CSP初赛知识清单(一)
  4. Java 反射 ---- 获取成员变量构造函数信息
  5. Java随机生成数组
  6. ASLR技术及关闭与开启
  7. 正则表达式只允许输入中英文
  8. 电脑和服务器怎样实现无盘启动,电脑无盘启动服务器怎么配置
  9. C++并发实战15:函数式编程
  10. 海思Hi3518e烧录步骤