L2-030 冰岛人 (25分)

2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:

冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。因为冰岛人口较少,为避免近亲繁衍,本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的功能。

输入格式:

输入首先在第一行给出一个正整数 N(1<N≤10​5​​),为当地人口数。随后 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
#include<iostream>
#include<unordered_map>
using namespace std;
struct person{int sex;string father;
};
unordered_map<string,person>mp;
string fname,lname;
int judge(string s1,string s2){int i=1,j;for( string A=s1; !A.empty(); i++,A=mp[A].father ){j=1;for( string B=s2; !B.empty(); j++,B=mp[B].father ){if( i>=5&&j>=5)  return 1;if( A==B&&(i<5 || j<5 ) ) return 0;}}return 1;
}
int main(){int n,m;scanf("%d",&n);for( int i=0; i<n; i++ ){cin>>fname>>lname;if(lname.back()=='m') mp[fname].sex=1;else if(lname.back()=='f') mp[fname].sex=-1;else if(lname.back()=='n'){string buf=lname.substr(0,lname.length()-4);mp[fname]={1,buf};}else if(lname.back()=='r'){string buf=lname.substr(0,lname.length()-7);mp[fname]={-1,buf};}}scanf("%d",&m);for( int i=0; i<m; i++ ){string f1,l1,f2,l2;cin>>f1>>l1>>f2>>l2;if(mp.find(f1)==mp.end()||mp.find(f2)==mp.end()) printf("NA\n"); else if(mp[f1].sex==mp[f2].sex) printf("Whatever\n");else printf("%s\n",judge(f1,f2)?"Yes":"No");}return 0;
}

L2-030 冰岛人 (25分)相关推荐

  1. L2-030 冰岛人 (25 分) unordered_map

    L2-030 冰岛人 题目 代码 题目 L2-030 冰岛人 (25 分) 冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir.因为冰岛 ...

  2. 【CCCC】L2-030 冰岛人 (25分) 模拟题,二叉树链式存储,从底部向上

    problem L2-030 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普 ...

  3. 7-11 冰岛人 (25分)

    7-11 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的 ...

  4. 天梯赛 L2-030 冰岛人 (25 分) map

    L2-030 冰岛人 (25 分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人 ...

  5. 冰岛人 (25 分)

    冰岛人 (25 分) 018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: iceland.JPG ...

  6. 天梯赛 L2-030 冰岛人 (25 分)

    天梯赛 L2-030 冰岛人 (25 分) 思路分析 看见这种题目,建议直接放弃... 仅打卡使用,本人不会做= = 参考代码 #include <iostream> #include & ...

  7. PTA L2-2 冰岛人 (25分)

    PTA L2-2 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛 ...

  8. L2-030 冰岛人 (25分)(C语言)

    L2-030 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿 ...

  9. L2-030 冰岛人 (25 分)-PAT 团体程序设计天梯赛 GPLT

    2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的 ...

最新文章

  1. OCR大突破:Facebook推出大规模图像文字检测识别系统——Rosetta
  2. oracle中的decode的使用
  3. 黑猫315十大行业乱象发布:背后真假套路难辨
  4. 廖雪峰javascript教程学习记录
  5. mysql大表join小表速度很慢_mysql多表join中,为什么子查询会那么慢,怎么解决-问答-阿里云开发者社区-阿里云...
  6. 【Redis】7.使用jedis操作redis数据库
  7. iOS开发UI篇—Quartz2D使用(绘图路径)
  8. codevs1079 回家
  9. 程序员年入50万,我们该如何努力达到这个目标?
  10. spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池
  11. 【数字图像处理】Canny边缘检测详解及编程实现
  12. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (12) - 执行核
  13. 科技文献检索(九)——检索步骤和策略
  14. 计算机重启发出响声怎么办,电脑不断响提示音怎么办
  15. 典型的人工神经网络由很多层构成,但不包括
  16. 计算机专业认知教育,计算机学院 “专业认知教育和学业规划教育”讲座顺利举行...
  17. 手牵手带你安装zookeeper
  18. 数据的编码类型及数据通信的工作方式
  19. matlab计算潮差程序,t_tide潮汐潮流调和分析工具包教程
  20. android 雷达图 蜘蛛图

热门文章

  1. 一口气看完MySQL--上篇
  2. k阶原点矩和中心距的理解
  3. 【精】LintCode领扣算法问题答案:1371. 链表组件
  4. 在windwos模拟器运行lvgl--LVGL-windwos环境搭建
  5. fastadmin框架将上传图片提示由英文更改为中文
  6. 极速畅享网络服务,华为云CDN下载加速一通到底
  7. 大学必考计算机软件cad,大学CAD考试试题2017「附答案」
  8. c语言编写10进制转换成2进制,c语言位域实现10进制转换成2进制
  9. [ vulhub漏洞复现篇 ] ECShop 4.x collection_list SQL注入
  10. mysql 5.7之后免安装详细图解教程