题目链接

https://pintia.cn/problem-sets/994805046380707840/problems/994805061769609216

思路

我们把这个家族关系看成一颗二叉树,树的根节点是子元素,“左儿子” 是父亲,“右儿子” 是母亲,然后我们定义 isman[i]isman[i]isman[i] 如果为 true 表示编号为id 的性别为,反之为,然后我们每次输入一行数据就连边,起点是当前编号,终点是父母编号(存在的话),然后我们在Q 次询问的时候,首先判断两个编号是否为异性,然后我们将以当前编号为起点的长度小于等于 555 的所有的点全部放入一个 set中,另一个人同理,我们只需要遍历其中一个set然后在另一个set中查找是否存在当前的元素,即可判断是否5代内有交集,如果没有交集的话就输出Yes 否则输出No

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fconst int N = 1e5+10;int n,q;
vector<int> V[N];
bool isman[N];void dfs(int id,int deep,set<int> &ans) {if(deep == 6) return;ans.insert(id);for(auto it : V[id])dfs(it,deep + 1,ans);
}void slove(int l,int r){if(isman[l] == isman[r]){cout<<"Never Mind"<<endl;return;}set<int> S1,S2;dfs(l,1,S1);dfs(r,1,S2);bool fg = false;for(auto it : S1){if(S2.find(it) != S2.end()) {fg = true;break;}}if(fg)  cout<<"No"<<endl;else cout<<"Yes"<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;int id,fa,ma;char sex;for(int i = 1;i <= n; ++i) {cin>>id>>sex>>fa>>ma;if(fa + 1) V[id].push_back(fa),isman[fa] = true;if(ma + 1) V[id].push_back(ma);if(sex == 'M') isman[id] = true;else isman[id] = false;}cin>>q;int l,r;while(q--) {cin>>l>>r;slove(l,r);}return 0;
}

L2-016 愿天下有情人都是失散多年的兄妹(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. Nodejs核心模块之net和http的使用详解
  2. 270亿参数、刷榜CLUE,达摩院神作!
  3. Python进阶1——一摞纸牌
  4. java大文件 索引_JAVA 大文件上传解决方案(500M以上)
  5. python方格染色_判定二部图的着色算法(Python),题,染色法,判断,二分
  6. InstallShield与Visual Studio
  7. 【奖】《密码信》破解者们,快来领奖啦!
  8. 赛题解析 | 初赛赛道一:实现一个分布式统计和过滤的链路追踪
  9. POJ3608(旋转卡壳--求两凸包的最近点对距离)
  10. 学习进行中,快over了
  11. c语言中变量的属性,C中的属性变量
  12. 第一篇 mybatis的简介
  13. Unity Contrib Project和资料
  14. SEO行业应该如何给客户报价
  15. access denied (java.io.FilePermission IKAnalyzer.cfg.xml read
  16. websocket 聊天室 demo ( tornado + nginx + wss + 在线demo)
  17. MQL5 编程基础:列表
  18. 关于JavaScript打印去掉页眉页脚
  19. android 夏令时,android – jodatime如何知道夏令时是否开启
  20. 飞机大战C++源代码

热门文章

  1. 我的pycharm+python常用快捷键(复习防遗忘版)
  2. 空卡安装设置树莓派4B并安装opencv+QT
  3. CUDA 9.0安装+CUDA版本转换 + cuDNN7.1安装
  4. vue从入门到进阶:Class 与 Style 绑定(四)
  5. (一)Maven 基本概念——根目录、项目创建、坐标
  6. Latex中关于参考文献的一些经验
  7. SCOPE 中 SPFILE、MEMORY、BOTH 的小小区别
  8. play 1.2.4的action执行前后的加载逻辑
  9. ZABBIX各版本之间的兼容性​
  10. mysql 主从的几个参数