题目链接:https://www.nowcoder.com/practice/2c958d09d29f46798696f15ae7c9703b?tpId=40&tqId=21453&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking

思路:其实我不是很懂为什么要把这题和并查集扯上关系,直接一个前驱关系就解决的问题,用并查集是不是有点大材小用?

其中son[i]数组代表i节点的孩子。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <cctype>
#include <climits>using namespace std;const int MAXN = 30000;
const int INF = INT_MAX;int main(){
//  freopen("in.txt", "r", stdin);int n, m;char son[MAXN];string str; while(~scanf("%d %d", &n, &m)){for(int i = 0; i < 27; i++){son['A' + i] = '#';}for(int i = 0; i < n; i++){cin >> str;if(isupper(str[1])) son[str[1]] = str[0];if(isupper(str[2])) son[str[2]] = str[0];}for(int i = 0; i < m; i++){cin >> str;bool flag = false;int count = 0;char tmp = str[0];while(son[tmp] != '#'){tmp = son[tmp];count++;if(tmp == str[1]){flag = true;break;}}if(!flag){count = 0;tmp = str[1];while(son[tmp] != '#'){tmp = son[tmp];count--;if(tmp == str[0]){flag = true;break;}}}if(!flag) printf("-\n");else{if(count == 1) printf("parent\n");else if(count == 2) printf("grandparent\n");else if(count >= 3){while(count > 2){printf("great-");count--;}printf("grandparent\n");}else if(count == -1) printf("child\n");else if(count == -2) printf("grandchild\n");else if(count <= -3){while(count < -2){printf("great-");count++;}printf("grandchild\n");}}}}return 0;
}

牛客oj 习题11.1 找出直系亲属(前驱记录)相关推荐

  1. 牛客OJ SQL后30题的解答

    题目来源:https://www.nowcoder.com/ta/sql 本文挑选了牛客OJ SQL比较典型的题目,有些题目为什么没写?那些重复性的,有些题目描述就不清楚的,看了讨论区也讲不清的,就没 ...

  2. Java黑皮书课后题第5章:5.11(找出能被5或6整除的数,但不能同时整除)编写程序,显示从100到1000之间能被5或6整除但不能同时整除的数,每行显示10个。数字之间用一个空格字符隔开

    5.11(编写程序,显示从100到1000之间能被5或6整除但不能同时整除的数,每行显示10个.数字之间用一个空格字符隔开 题目 题目概述 破题 引申:continue break与return 代码 ...

  3. 程序员面试金典——11.5找出字符串

    程序员面试金典--11.5找出字符串 Solution1:我的答案.加强版的二分查找,嘿嘿嘿 class Finder { public:int findString(vector<string ...

  4. 习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。

    C++程序设计(第三版) 谭浩强 习题5.7 个人设计 习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点). 代码块: #include <io ...

  5. 九度OJ 1035:找出直系亲属(二叉树)

    题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...

  6. hdu3786 找出直系亲属 水题

    题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. HDU3786 找出直系亲属【关系闭包】

    找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. KY122 找出直系亲属

    KY122 找出直系亲属 def cntGen(parentsDict, descendant, ascendant):if descendant not in parentsDict:return ...

  9. 3秒种找出电脑所有记录的帐号密码

    3秒种找出电脑所有记录的帐号密码 3秒种找出电脑所有记录的帐号密码,这样的软件有点恐怖啊,在自己机上试了下,晕,全出来了 ~~ 这是一个查看密码的软件,可以自动搜索IE的自动完成密码.OE密码.Out ...

  10. 九度[1035]-找出直系亲属

    九度[1035]-找出直系亲属 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A, ...

最新文章

  1. 博客园博客停止更新的通知,程序员生存定律会在CSDN发完
  2. 【转】解决IIS 用localhost需要用户名密码!
  3. 13.6 Thread类自定义线程类
  4. python中函数修饰符_python中的函数修饰符
  5. 年度布道师颁奖|盘点2020年网易智企的布道先锋们
  6. controller需要捕获异常吗_Spring之Controller异常处理
  7. 38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)
  8. python多线程写同一个文件_Python多线程快速写入文件,python,飞速
  9. 计算机硬件故障处理及维护,计算机硬件故障处理与维护方法
  10. charles测试学习 手机端连接电脑进行抓包分析
  11. php中is upload,PHP中,文件上传
  12. layui的treeTable插件表格树表格行单击点击事件绑定不生效
  13. 2021年山东省安全员C证考试及山东省安全员C证模拟考试
  14. 扫雷——完整版!!!!!!
  15. [机房测试]数字谜题
  16. 论文阅读笔记《Regularizing Dialogue Generation by Imitating Implicit Scenarios》
  17. EM与PX的对应关系
  18. 这篇 ElasticSearch 详细使用教程,内部分享时被老大表扬了
  19. 自己整理mysql语句
  20. 寻找最小可行化产品背后的真理

热门文章

  1. 简单的交叉熵损失函数,你真的懂了吗?
  2. 你还把游戏本地化当作是游戏翻译
  3. amd显卡怎么设置风扇?
  4. 使用可道云在centos上搭建个人网盘(附带端口修改)
  5. Bumped Map And Normal Map
  6. Java中怎么打开jsp_jsp文件怎么打开 打开jsp文件的详细步骤【详细介绍】
  7. 胃病患者饮食结构注意事项
  8. 系统时间与格林威治时间
  9. 计算机二级C语言-B程序修改题
  10. 头像 linux,头像制作大师下载-头像制作大师appv1.2.0-Linux公社