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

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

输入格式:

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

  1. 本人ID 性别 父亲ID 母亲ID

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

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

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

输出格式:

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

输入样例:

  1. 24
  2. 00001 M 01111 -1
  3. 00002 F 02222 03333
  4. 00003 M 02222 03333
  5. 00004 F 04444 03333
  6. 00005 M 04444 05555
  7. 00006 F 04444 05555
  8. 00007 F 06666 07777
  9. 00008 M 06666 07777
  10. 00009 M 00001 00002
  11. 00010 M 00003 00006
  12. 00011 F 00005 00007
  13. 00012 F 00008 08888
  14. 00013 F 00009 00011
  15. 00014 M 00010 09999
  16. 00015 M 00010 09999
  17. 00016 M 10000 00012
  18. 00017 F -1 00012
  19. 00018 F 11000 00013
  20. 00019 F 11100 00018
  21. 00020 F 00015 11110
  22. 00021 M 11100 00020
  23. 00022 M 00016 -1
  24. 00023 M 10012 00017
  25. 00024 M 00022 10013
  26. 9
  27. 00021 00024
  28. 00019 00024
  29. 00011 00012
  30. 00022 00018
  31. 00001 00004
  32. 00013 00016
  33. 00017 00015
  34. 00019 00021
  35. 00010 00011

输出样例:

  1. Never Mind
  2. Yes
  3. Never Mind
  4. No
  5. Yes
  6. No
  7. Yes
  8. No
  9. No
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. char sex[];
  5. int F[]={-};
  6. int M[]={-};
  7. int record[]={};
  8.  
  9. void init()
  10. {
  11. for(int i=;i<=;i++)
  12. {
  13. record[i]=;
  14. }
  15. }
  16.  
  17. bool judge(int x,int y)
  18. {
  19. init();
  20. queue<int> q;
  21. q.push(x);
  22. int knum=;
  23. while(!q.empty())
  24. {
  25. if(knum==) break;
  26. int num=q.size();
  27. for(int i=;i<num;i++)
  28. {
  29. int k=q.front();
  30. q.pop();
  31. if(F[k]!=-)
  32. {
  33. //cout<<"save "<<F[k]<<endl;
  34. record[F[k]]=;
  35. q.push(F[k]);
  36. }
  37. if(M[k]!=-)
  38. {
  39. //cout<<"save "<<M[k]<<endl;
  40. record[M[k]]=;
  41. q.push(M[k]);
  42. }
  43. }
  44. knum++;
  45. }
  46. //cout<<record[22]<<endl;
  47. queue<int> emp;
  48. swap(emp,q);
  49. knum=;
  50. //if(q.empty()) cout<<"*****true****"<<endl;
  51. q.push(y);
  52. while(!q.empty())
  53. {
  54. //cout<<"== "<<knum<<endl;
  55. if(knum==) break;
  56. int num=q.size();
  57. for(int i=;i<num;i++)
  58. {
  59. int k=q.front();
  60. q.pop();
  61. if(record[k]==)
  62. {
  63. //cout<<"exit "<<k<<" "<<record[k]<<endl;
  64. return false;
  65. }
  66. if(F[k]!=-)
  67. {
  68. q.push(F[k]);
  69. }
  70. if(M[k]!=-)
  71. {
  72. q.push(M[k]);
  73. }
  74. }
  75. knum++;
  76. }
  77. return true;
  78. }
  79.  
  80. int main()
  81. {
  82. for(int i=;i<=;i++)
  83. {
  84. F[i]=-;
  85. M[i]=-;
  86. }
  87. int n;
  88. cin>>n;
  89. for(int i=;i<n;i++)
  90. {
  91. int a;
  92. cin>>a;
  93. cin>>sex[a]>>F[a]>>M[a];
  94. sex[F[a]]='M';
  95. sex[M[a]]='F';
  96. }
  97. int k;
  98. cin>>k;
  99. while(k--)
  100. {
  101. int x,y;
  102. cin>>x>>y;
  103. if(sex[x]==sex[y]) cout<<"Never Mind"<<endl;
  104. else
  105. {
  106. if(judge(x,y)) cout<<"Yes"<<endl;
  107. else cout<<"No"<<endl;
  108. }
  109. }
  110. return ;
  111. }

L2-016 愿天下有情人都是失散多年的兄妹的更多相关文章

  1. L2-016. 愿天下有情人都是失散多年的兄妹(深搜)*

    L2-016. 愿天下有情人都是失散多年的兄妹 参考博客 #include<iostream> #include<cstdio> #include<cstring> ...

  2. 愿天下有情人都是失散多年的兄妹(bfs)

    L2-016. 愿天下有情人都是失散多年的兄妹 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 呵呵.大家都知道五服以内不得通婚 ...

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

    L2-016. 愿天下有情人都是失散多年的兄妹 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 呵呵.大家都知道五服以内不得通婚 ...

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

    https://pintia.cn/problem-sets/994805046380707840/problems/994805061769609216 呵呵.大家都知道五服以内不得通婚,即两个人最 ...

  5. PAT L2-016 愿天下有情人都是失散多年的兄妹(深搜)

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

  6. 【PTA 天梯赛】L2-016. 愿天下有情人都是失散多年的兄妹(深搜)

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

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

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

  8. PAT 天梯赛练习集 L2-016. 愿天下有情人都是失散多年的兄妹

    题目链接:https://www.patest.cn/contests/gplt/L2-016 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母. ...

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

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

随机推荐

  1. swift的enum模式—对Alamofire入口的解析--数据结构与操作结合的模式

    swift的枚举模式是数据结构与操作结合的模式 1.enum本质是一个类型,可以定义变量: 它定义的变量可以用到其它变量用的的任何地方:函数的输入.输出.成员变量.临时变量等: 这个变量还可以带有附加 ...

  2. css3动画效果小结

    css3的动画功能有以下三种: 1.transition(过度属性) 2.animation(动画属性) 3.transform(2D/3D转换属性) 下面逐一进行介绍我的理解: 1.transiti ...

  3. 「PKUWC2018」随机算法

    题目 思博状压写不出是不是没救了呀 首先我们直接状压当前最大独立集的大小显然是不对的,因为我们的答案还和我们考虑的顺序有关 我们发现最大独立集的个数好像不是很多,可能是\(O(n)\)级别的,于是我们 ...

  4. Hive学习之路 (十三)Hive分析窗口函数(一) SUM,AVG,MIN,MAX

    数据准备 数据格式 cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, 创建数据库及表 create datab ...

  5. 关于Python常用框架学习

    我对Python不是特别熟悉,我仅仅只知道它在Web自动化领域挺牛逼的,还有爬虫.当然了,现在的人工智能和机器学习用到它也很多. 记得六月还是七月份的时候,那个时候,突然心血来潮就开始学起了Pytho ...

  6. Docker实战(三)之访问Docker仓库

    仓库是集中存放镜像的地方,分为公共仓库和私有仓库.一个容易与之混肴的概念是注册服务器.实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像.从这方面来说 ...

  7. Kafka设计解析(七)Kafka Stream

    转载自 技术世界,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka ...

  8. PAT乙级1021

    1021 个位数统计 (15 分)   给定一个 k 位整数 N=d​k−1​​10​k−1​​+⋯+d​1​​10​1​​+d​0​​ (0≤d​i​​≤9, i=0,⋯,k−1, d​k−1​​& ...

  9. TopJUI | easyui HTML Dialog页面间GET方式数据传递

    较容易的方式通过URL内带参数进行数据传递 var url = "apddList.html?c0=" + row.uuid + "&c1=" + ro ...

  10. 基于 HTML5 Canvas 的智能安防 SCADA 巡逻模块

    基于 HTML5 Canvas 的智能安防 SCADA 巡逻模块 前言 最近学习了 HT for Web flow 插件,除了正常的 flow 效果,其中还有两个十分好用的两个接口 getPercen ...