PTA L2-2 冰岛人 (25分)
PTA L2-2 冰岛人 (25分)
2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:
冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。因为冰岛人口较少,为避免近亲繁衍,本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的功能。
输入格式:
输入首先在第一行给出一个正整数 N(),为当地人口数。随后 N 行,每行给出一个人名,格式为:名 姓(带性别后缀)
,两个字符串均由不超过 20 个小写的英文字母组成。维京人后裔是可以通过姓的后缀判断其性别的,其他人则是在姓的后面加 m
表示男性、f
表示女性。题目保证给出的每个维京家族的起源人都是男性。
随后一行给出正整数 M,为查询数量。随后 M 行,每行给出一对人名,格式为:名1 姓1 名2 姓2
。注意:这里的姓
是不带后缀的。四个字符串均由不超过 20 个小写的英文字母组成。
题目保证不存在两个人是同名的。
输出格式:
对每一个查询,根据结果在一行内显示以下信息:
- 若两人为异性,且五代以内无公共祖先,则输出
Yes
; - 若两人为异性,但五代以内(不包括第五代)有公共祖先,则输出
No
; - 若两人为同性,则输出
Whatever
; - 若有一人不在名单内,则输出
NA
。
所谓“五代以内无公共祖先”是指两人的公共祖先(如果存在的话)必须比任何一方的曾祖父辈分高。
输入样例:
15
chris smithm
adam smithm
bob adamsson
jack chrissson
bill chrissson
mike jacksson
steve billsson
tim mikesson
april mikesdottir
eric stevesson
tracy timsdottir
james ericsson
patrick jacksson
robin patricksson
will robinsson
6
tracy tim james eric
will robin tracy tim
april mike steve bill
bob adam eric steve
tracy tim tracy tim
x man april mikes
输出样例:
Yes
No
No
Whatever
Whatever
NA
作者: 陈越
单位: 浙江大学
时间限制: 400 ms
内存限制: 64 MB
代码长度限制: 16 KB
思路:这个题就可以看成是一棵树,可以通过姓指向他的父亲的名,然后他父亲的姓又能指向他父亲的父亲的名……这就可以看作是一个有孩子结点指向父亲节点的树。我们可以通过一个人的名来找出他父亲的所有信息,然后根据父亲信息中的姓又能找出父亲的父亲的所有信息……用map实现,key表示一个人的名,value表示这个人的父亲的信息结构体。
Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
int N, M;
struct node
{char gender;string father;node(char gender = '\0', string father = "") : gender(gender), father(father) {}
};
map<string, node> p;
bool judge(string x, string y)
{int cx = 1, cy;for (string xf = x; xf != ""; xf = p[xf].father, cx++){cy = 1;for (string yf = y; yf != ""; yf = p[yf].father, cy++){if (cx >= 5 && cy >= 5)return true;else if (xf == yf)return false;}}return true;
}
int main()
{std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> N;string a, b, c, d;while (N--){cin >> a >> b;if (b.back() == 'n')p[a] = node('m', b.substr(0, b.size() - 4));else if (b.back() == 'r')p[a] = node('f', b.substr(0, b.size() - 7));elsep[a].gender = b.back();}cin >> M;while (M--){cin >> a >> b >> c >> d;if (p.find(a) == p.end() || p.find(c) == p.end())printf("NA\n");else if (p[a].gender == p[c].gender)printf("Whatever\n");elseprintf(judge(a, c) ? "Yes\n" : "No\n");}return 0;
}
PTA L2-2 冰岛人 (25分)相关推荐
- L2-030 冰岛人 (25分)
L2-030 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿 ...
- L2-030 冰岛人 (25 分) unordered_map
L2-030 冰岛人 题目 代码 题目 L2-030 冰岛人 (25 分) 冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir.因为冰岛 ...
- 【CCCC】L2-030 冰岛人 (25分) 模拟题,二叉树链式存储,从底部向上
problem L2-030 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普 ...
- 7-11 冰岛人 (25分)
7-11 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的 ...
- 天梯赛 L2-030 冰岛人 (25 分) map
L2-030 冰岛人 (25 分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人 ...
- 冰岛人 (25 分)
冰岛人 (25 分) 018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: iceland.JPG ...
- 天梯赛 L2-030 冰岛人 (25 分)
天梯赛 L2-030 冰岛人 (25 分) 思路分析 看见这种题目,建议直接放弃... 仅打卡使用,本人不会做= = 参考代码 #include <iostream> #include & ...
- L2-030 冰岛人 (25分)(C语言)
L2-030 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿 ...
- PTA 7-29 冰岛人 (25分)
2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的 ...
最新文章
- 软件测试面试总结——常见的面试问题
- python连接服务器怎么用_使用Python连接到远程服务器
- 原生js实现ajax的文件异步提交功能、图片预览功能.实例
- 特斯拉Model 3产能跟不上,是因为用了太多机器人
- redis介绍、主从配置
- 【CentOS 7笔记43】,防火墙和iptables filter表#
- php数组操作,内容相同,键值不同,互换
- 计算机领域,客观事物的属性,客观事物
- 我在成都火车站捡了个彝族美女 第19节:饭来张口的生活
- 基于稀疏表示的分类方法 Sparse Representation based Classification Method
- TexturePacker破解办法
- Java通过webcam-capture调用摄像头并截图
- suse bios版本_如何检查和更新BIOS版本
- hdu 6706 huntian oy 杜教筛
- Linux学习笔记(二十三) -- QT的安装和卸载
- MOS管符号识别MOS管不同功能MOS管与寄生电容
- 运行单机游戏时,缺少D3DCompiler_43.dll
- 2021 ICPC Southeastern Europe Regional Contest 树上dfs+思维
- 解决Axure的元件库中部分原件不可使用的方法
- 从《羊了个羊》看随机数的生成原理
热门文章
- 1039家校通 万能密码绕过 CNVD-2020-31494
- m基于效用函数的联合资源分配matlab仿真,对比PF,CUBP以及DUBP三种方法
- pbi 度量值计算列+日期表+层次结构+数据分组+交互式分析+横向纵向可视化选择+轴、图例、值拖拽
- 西安交大2020年秋 在线作业及答案
- Spring数据库访问
- m.2固态硬盘 服务器,M.2接口固态硬盘选购注意事项:PCIe和SATA的区别
- 什么是制造运营管理(MOM)-西门子MES/MOM介绍
- 题目 1605: 阿尔法乘积
- Go语言channel的底层
- 在UE4虚幻引擎下使用VRPN接入optitrack(Motive)的实时数据