题意:
找出直系亲属
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1189    Accepted Submission(s): 493

Problem Description
如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A,B是C的(外)曾祖父,曾祖母,则A,B是C的great-grandparent,C是A,B的great-grandchild,之后再多一辈,则在关系上加一个great-。
 
Input
输入包含多组测试用例,每组用例首先包含2个整数n(0<=n<=26)和m(0<m<50), 分别表示有n个亲属关系和m个问题, 然后接下来是n行的形式如ABC的字符串,表示A的父母亲分别是B和C,如果A的父母亲信息不全,则用-代替,例如A-C,再然后是m行形式如FA的字符串,表示询问F和A的关系。
当n和m为0时结束输入。
 
Output
如果询问的2个人是直系亲属,请按题目描述输出2者的关系,如果没有直系关系,请输出-。
具体含义和输出格式参见样例.
 
Sample Input
3 2
ABC
CDE
EFG
FA
BE
0 0
 
Sample Output
great-grandparent
-

思路:

       我用的是Floyd处理了一遍,也可以直接搜索处理,怎么都行,题简单,数据简单,随意怎么写,只要能记录两点之间的距离就行了,还有就是一定是有向图,还有个提示就是输入的不一定只是26个大写字母,一开始一看26就直接自己默认了,结果wa了好几次,丢脸啊..


#include<stdio.h>#define INF 1000000000

int map[105][105];void Floyd()
{for(int k = 1 ;k <= 100 ;k ++)for(int i = 1 ;i <= 100 ;i ++)for(int j = 1 ;j <= 100 ;j ++)if(map[i][j] > map[i][k] + map[k][j])map[i][j] = map[i][k] + map[k][j];
}int minn(int x, int y)
{return x < y ? x : y;
}int main ()
{int n ,m ,i ,j ,a ,b ,c;char str[10];while(scanf("%d %d" ,&n ,&m) && n + m){//getchar();
      for(i = 1 ;i <= 100 ;i ++)for(j = 1 ;j <= 100 ;j ++)if(i == j)map[i][j] = 0;else map[i][j] = INF;   for(i = 1 ;i <= n ;i ++){scanf("%s" ,str);// getchar();
         a = str[0];b = str[1];c = str[2];map[a][b] = map[a][c] = 1;}Floyd();for(i = 1 ;i <= m ;i ++){scanf("%s" ,str);a = str[0];b = str[1];c = minn(map[a][b] ,map[b][a]);if(c == INF || !c){puts("-");continue;}if(c == 1){if(map[a][b] == 1) puts("child");else puts("parent");}else{if(map[a][b] != INF){c -= 2;for(j = 1 ;j <= c ;j ++)printf("great-");puts("grandchild");}else{c -= 2;for(j = 1 ;j <= c ;j ++)printf("great-");puts("grandparent");}}}}return 0;
}

hdu3786 找出直系亲属 水题相关推荐

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

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

  2. hdu3786 Floyd或搜索 水题

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

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

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

  4. KY122 找出直系亲属

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

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

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

  6. HDU_3786 找出直系亲属- softbar

    Problem Description 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的 ...

  7. 九度1035:找出直系亲属并查集

    题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A ...

  8. 【CodeForces - 764A】Taymyr is calling you (找规律,水题)

    题干: Comrade Dujikov is busy choosing artists for Timofey's birthday and is recieving calls from Taym ...

  9. 如何通过clickhouse找出灌水用户

    从类型上分 灌水用户的内容长度一般比较短 带有明显的广告内容 短时间内发布的频率较高 短时间内发发布的频率高且间隔短 - 对于第一种类型可以通过 length(text) 判断长度 对于第二种类型可以 ...

最新文章

  1. stm32IAP代码升级小结
  2. socket中使用多线程创建并发服务器
  3. 今天我注册博客园了,我很开心!
  4. mac安装mysql记录,使用zsh
  5. 程序人生--一个程序员对学弟学妹建议
  6. Disruptor高性能缓存队列入门指导
  7. new函数的使用方法
  8. 软件工程需求分析文档模板
  9. 一篇文章看懂自然语言处理——word表示技术的变迁(从bool模型到BERT)
  10. ss-panel安装笔记
  11. DragonBones+Unity 实现换装
  12. 【渝粤题库】广东开放大学 建筑构造 形成性考核
  13. 2022高教社杯 国赛数学建模 A题思路
  14. 4.7 Case Study on Sandy Bridge C…
  15. 浅谈中国2050年人均受教育年限问题
  16. http和https的区别
  17. SQLZOOL练习题答案和解析 第2关 SELECT from World
  18. qq大学认证如何修改随意修改认证内容
  19. 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(四)
  20. Polygon zkEVM的pil-stark Fibonacci状态机代码解析

热门文章

  1. js中的hasOwnProperty和isPrototypeOf方法
  2. SQL Server 数据库设计
  3. oracle tuning 工具
  4. 【原译】简单的Malloc实现
  5. ShopEx安装过程
  6. 石川es6课程---1-2、ES6简介
  7. python与mysql数据库连接中常见错误
  8. javaweb回顾第十二篇监听器
  9. 【 转 】Keepalived工作原理
  10. 【组织】请13级1/2/3班,14级1/2班 将同学们的博客地址列个清单回复(按班级来)...