题意:
找出直系亲属
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 Floyd或搜索 水题相关推荐

  1. hdu3786 找出直系亲属 水题

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

  2. DFS水题 URAL 1152 False Mirrors

    题目传送门 1 /* 2 题意:一个圈,每个点有怪兽,每一次射击能消灭它左右和自己,剩余的每只怪兽攻击 3 搜索水题:sum记录剩余的攻击总和,tot记录承受的伤害,当伤害超过ans时,结束,算是剪枝 ...

  3. 搜索 由浅入深 之一 水题

    搜索很重要,是很难学的算法,能看懂很简单,但是要想真正做出题来就比较困难了,那么,我们现在就水题开始研究搜索. 水题之: 1024: [SCOI2009]生日快乐 Time Limit: 1 Sec  ...

  4. 搜索复习-基础水题(一共12道)

    由于是跟着黄学长刷题,此篇博文里所有JudgeOnline都是http://218.5.5.242:9018/JudgeOnline/ tyvj1080 N皇后 描述 检查一个如下的6 x 6的跳棋棋 ...

  5. NoiOpenjudge水题选刷之_搜索

    1789:算24 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式.现在的问题是,是否存在一种方式使得得到的表达式的结果等于24. 这里加减乘除以及括号的运 ...

  6. 22.11.30打卡 记忆化搜索2水题

    Function Run Fun 记忆化搜索模板题, 个人认为比滑雪还简单 需要注意的只有当数组下标为负数的时候需要特判一下 其余直接照抄题目就能过了 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿ ...

  7. 图论刷水题记录(二)(最短路-----SPFA算法)

    继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...

  8. poj1564 Sum It Up dfs水题

    题目描述: Description Given a specified total t and a list of n integers, find all distinct sums using n ...

  9. MOCTF-Web-一道水题

    首先我们看看题目: 进入传送门查看:http://119.23.73.3:5001/web1/ 水题嘛,直接查看源码搜索flag,得到flag

最新文章

  1. 如何关闭vue项目中eslint的校验
  2. 2月第二周.COM增近12万 ×××域名.XXX减122个
  3. 放张载玻片就能放大一万倍,普通光学显微镜都馋哭了 | Nature子刊
  4. 微型计算机常用的总线类型,常见总线有哪些类型
  5. 【Arduino】十秒挑战
  6. sap 無法建立 activex 元件_安徽陶瓷膜芯元件
  7. wxWidgets:wxSizeEvent类用法
  8. 坑 之 You must feed a value for placeholder tensor ‘label_input‘ with dtype float and shape
  9. 线段树POJ3468(成段更新,区间求和)
  10. CF1271D Portals
  11. Java 修饰符详解:吐血整理,带你从底层语法和开发案例疏通这 11 种常见修饰符
  12. A Hierarchical Reinforced Sequence Operation Method for Unsupervised Text Style Transfer
  13. TCP协议最大字节数计算
  14. 注册测绘师考试有用吗
  15. 矩阵乘法,输出结果矩阵
  16. PyQt5 关于消息盒子QMessageBox 不显示消息盒子且出现内存不足的问题
  17. 求助 电脑能正常上网,但开热点手机连上用不了。开的热点显示ipv6无网络访问权限。
  18. 火车头采集器采集教程
  19. 【线程池封装】实现简单回射服务器
  20. 全网最详细的如何在谷歌浏览器里正确下载并安装Postman【一款功能强大的网页调试与发送网页HTTP请求的Chrome插件】(图文详解)...

热门文章

  1. Unity 一个脚本调用另一个脚本的函数
  2. Linux软件包管理基本操作入门
  3. sudo及其配置文件sudoers
  4. 画正圆角矩形 - HTML5 Canvas 作图
  5. 201671010436 王雪刚 实验四 《英文文本统计分析》结对项目报告
  6. python 03 字符串详解
  7. 20秒搭建web服务器,跨平台(mac,window)
  8. 48.结构体位域获取内存模型
  9. Pycharm同步git代码提示:Merge failed
  10. ajax-典型应用-验证用户名