L2-016 愿天下有情人都是失散多年的兄妹(DFS)
题目链接
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)相关推荐
- L2-016 愿天下有情人都是失散多年的兄妹 (dfs,离散化)
L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 因为人的id都是整数,所以这道题可以离散化,也可以不离散化,在此给出两种方式的代码: 非离散化代码: #include<bits/st ...
- (L2-016)愿天下有情人都是失散多年的兄妹(dfs)
题目链接:PTA | 程序设计类实验辅助教学平台 输入样例: 24 00001 M 01111 -1 00002 F 02222 03333 00003 M 02222 03333 00004 F 0 ...
- 【PTA-训练day6】L2-016 愿天下有情人都是失散多年的兄妹+ L1-011 帅到没朋友
L2-016 愿天下有情人都是失散多年的兄妹 - dfs PTA | 程序设计类实验辅助教学平台 思路: 先记录每个人的父母 然后k组查询 分别用dfs搜索两个人的族谱 五服之内出现的人都标记 如果搜 ...
- 7-57 愿天下有情人都是失散多年的兄妹 (25 分)(深搜)
7-57 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...
- 【CCCC】L2-016 愿天下有情人都是失散多年的兄妹 (25分),,搜索公共祖先
problem L2-016 愿天下有情人都是失散多年的兄妹 (25分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚. ...
- 7-13 愿天下有情人都是失散多年的兄妹 (25 分)
7-13 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...
- L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(C语言)(并查集)(dfs)(测试点坑)
题目 L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请 ...
- 天梯赛 L2-016 愿天下有情人都是失散多年的兄妹 (25 分)[测试点1 3 4][未填坑]
L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 思路: 在录入的时候用map和结构体储存性别,父母ID, 判断的时候先判断性别,再用dfs搜索第一个人五服之内的关系,并将关系任务ID存储到 ...
- 天梯赛:L2-016 愿天下有情人都是失散多年的兄妹 (25 分)
题目详情 - L2-016 愿天下有情人都是失散多年的兄妹 (25 分) (pintia.cn) 题解:对于每个给出的编号进行层序遍历,把遍历到的元素存进集合里.如果两个集合存在交集,就代表它们存在公 ...
- 7-2 愿天下有情人都是失散多年的兄妹
7-2 愿天下有情人都是失散多年的兄妹 样例 24 00001 M 01111 -1 00002 F 02222 03333 00003 M 02222 03333 00004 F 04444 033 ...
最新文章
- Nodejs核心模块之net和http的使用详解
- 270亿参数、刷榜CLUE,达摩院神作!
- Python进阶1——一摞纸牌
- java大文件 索引_JAVA 大文件上传解决方案(500M以上)
- python方格染色_判定二部图的着色算法(Python),题,染色法,判断,二分
- InstallShield与Visual Studio
- 【奖】《密码信》破解者们,快来领奖啦!
- 赛题解析 | 初赛赛道一:实现一个分布式统计和过滤的链路追踪
- POJ3608(旋转卡壳--求两凸包的最近点对距离)
- 学习进行中,快over了
- c语言中变量的属性,C中的属性变量
- 第一篇 mybatis的简介
- Unity Contrib Project和资料
- SEO行业应该如何给客户报价
- access denied (java.io.FilePermission IKAnalyzer.cfg.xml read
- websocket 聊天室 demo ( tornado + nginx + wss + 在线demo)
- MQL5 编程基础:列表
- 关于JavaScript打印去掉页眉页脚
- android 夏令时,android – jodatime如何知道夏令时是否开启
- 飞机大战C++源代码
热门文章
- 我的pycharm+python常用快捷键(复习防遗忘版)
- 空卡安装设置树莓派4B并安装opencv+QT
- CUDA 9.0安装+CUDA版本转换 + cuDNN7.1安装
- vue从入门到进阶:Class 与 Style 绑定(四)
- (一)Maven 基本概念——根目录、项目创建、坐标
- Latex中关于参考文献的一些经验
- SCOPE 中 SPFILE、MEMORY、BOTH 的小小区别
- play 1.2.4的action执行前后的加载逻辑
- ZABBIX各版本之间的兼容性​
- mysql 主从的几个参数