hdu3786 找出直系亲属 水题
题意:
找出直系亲属
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 找出直系亲属 水题的更多相关文章
- 九度OJ 1035:找出直系亲属(二叉树)
题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...
- HDU——3786找出直系亲属(DFS+回溯)
找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu3786 Floyd或搜索 水题
题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- ytu 2011: C语言实验——找中间数(水题)
2011: C语言实验——找中间数 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 212 Solved: 122[Submit][Status][Web ...
- 九度OJ 1035:找出直系亲属 (二叉树、递归)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2380 解决:934 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外) ...
- 牛客小白月赛9H论如何出一道水题(两个连续自然数互质)
题面 记录一下...连续得两个自然数互质,这题再特判一下1的情况 #include<bits/stdc++.h> using namespace std; int main() { lon ...
- UVaLive 6847 Zeroes (找规律,水题)
题意 :给定一个范围,然后让你求在这个范围内所有的数的阶乘末尾0的个数有多少种. 析:找规律,写几个就会发现每隔5个会增加一个0,因为要么乘10了,要么乘5了. 代码如下: #pragma comme ...
- 九度oj 题目1035:找出直系亲属
题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild ...
- zju 1037 Gridland(找规律,水题)
题目链接 多写几个案例,根据数据的奇偶性,就能找到规律了 #include<stdio.h> int main() { int t,n,m; double ans; scanf(" ...
随机推荐
- 剑指 Offer 58 - II. 左旋转字符串 + 简单题
剑指 Offer 58 - II. 左旋转字符串 Offer_58_2 题目描述 java代码 package com.walegarrett.offer; /** * @Author WaleGar ...
- 反射的常用API
反射的常用API 加载程序集 Assembly assembly = Assembly.Load("程序集名称"); // 从前目录加载程序集,提供程序集名称,无后缀 Assemb ...
- c++随机数问题研究
1.问题背景 某项目中有个复杂的排序,先是各种规则依次排序,最后如果依然并列的话,那就随机位置,名次并列.测试中发现一个诡异现象,并列时随机排序但随机后2个case打印的顺序每次都一样,随机数没有起到 ...
- 漏洞复现-CVE-2016-4437-Shiro反序列化
0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)(兼顾反弹shell的攻击机) 0x01 影响版本 Shiro <= ...
- linux 设置DNS解决,不能ping 域名的问题
vi /etc/resolv.conf nameserver 114.114.114.114
- Codeforces Round #683 (Div. 2, by Meet IT)
A 初始情况\(1\) ~ \(n\)堆分别有 \(1\) ~ \(n\) 个糖果,第\(i\)次操作给除了所选堆的糖果数 \(+ i\), 找到一种方案可以使得所有堆糖果数相同,输出操作次数和每次选 ...
- 使用Java+NetBeans设计web服务和页面,用Tomcat部署网页
一 安装NetBeans(自动安装jdk) 二 创建服务器 三 发布服务 一 安装NetBeans(自动安装jdk) 进入oracle的下载界面: http://www.oracle.com/tech ...
- 050_Servlet详解
目录 Servlet Servlet简介 HelloServlet Servlet原理 servlet-mapping Servlet请求路径 ServletContext Servlet上下文 Se ...
- 循环3n加1问题
package 第二章; import java.util.Scanner; //int 32位整数 /* * 猜想:对于任意大于一的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半 经过 ...
- vue实现拖拽排序
基于vue实现列表拖拽排序的效果 在日常开发中,特别是管理端,经常会遇到要实现拖拽排序的效果:这里提供一种简单的实现方案. 此例子基于vuecli3 首先,我们先了解一下js原生拖动事件: 在拖动目标 ...