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(" ...
随机推荐
- HDOJ-6621(线段树+二分法)
K-th Closest Distance HDOJ-6621 本题可以使用线段树解决,结点存本结点对应的所有元素,并按照从小打到排序 最后使用二分法求解答案.因为题目中有绝对值,所以需要使用两次查找 ...
- CCF(元素选择器:50分):字符串+模拟
元素选择器 201809-3 这里我只考虑了没有后代选择器的情况 #include<iostream> #include<cstdio> #include<cstring ...
- POJ1458 Common Subsequence
题目链接:http://poj.org/problem?id=1458 分析:最大公共子序列模板 1 #include<iostream> 2 #include<sstream> ...
- pytorch(16)损失函数(二)
5和6是在数据回归中用的较多的损失函数 5. nn.L1Loss 功能:计算inputs与target之差的绝对值 代码: nn.L1Loss(reduction='mean') 公式: \[l_n ...
- TIOBE 编程语言排行榜
https://www.tiobe.com/tiobe-index/ TIOBE 编程语言排行榜是编程语言流行趋势的一个指标
- POJ_2533 Longest Ordered Subsequence 【LIS】
一.题目 Longest Ordered Subsequence 二.分析 动态规划里的经典问题.重在DP思维. 如果用最原始的DP思想做,状态转移方程为$DP[i] = max(DP[j] + 1) ...
- 解析Wide Residual Networks
Wide Residual Networks (WRNs)是2016年被提出的基于扩展通道数学习机制的卷积神经网络.对深度卷积神经网络有了解的应该知道随着网络越深性能越好,但是训练深度卷积神经网络存在 ...
- mysql最权威的总结
1.数据库操作 create database person charset utf8; -- 创建数据库show DATABASES; -- 查看数据库drop database person; - ...
- 你真的懂 i++ 和 ++i 吗?
对于 ++i 和 i++,许多人可能都知道,不就是先加1再取值,和先取值再加1嘛.然而,真的是这样吗?请先看以下4道题,能全部答对可以忽略这篇文章. 题目 // 示例1 int i = 1; i = ...
- html Ajax连接.NET Ashx
Html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m ...