九度OJ 1035:找出直系亲属(二叉树)
题目1035:找出直系亲属
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1309
解决:521
- 题目描述:
-
如果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-。
- 输入:
-
输入包含多组测试用例,每组用例首先包含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时结束输入。 - 输出:
-
如果询问的2个人是直系亲属,请按题目描述输出2者的关系,如果没有直系关系,请输出-。
具体含义和输出格式参见样例. - 样例输入:
-
3 2 ABC CDE EFG FA BE 0 0
- 样例输出:
-
great-grandparent -
- 来源:
- 2009年浙江大学计算机及软件工程研究生机试真题
- MYCode
-
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define MAX 110
int pre[ 27];
int find( int id1, int id2)
{
int ct = 0;
while(id1 != id2 && id1 != - 1)
{
id1 = pre[id1];
ct++;
}
if(id1 == id2)
return ct;
return 0;
}
int main()
{
int n, m;
while(scanf( "%d%d", &n, &m) != EOF)
{
if(n == 0 && m == 0)
break;
memset(pre, - 1, sizeof(pre));
char str[ 3];
int i;
for(i = 1; i <= n; i++)
{
scanf( "%s", &str);
int a, b = - 1, c = - 1;
a = str[ 0] - 'A';
if(str[ 1] >= 'A' && str[ 1] <= 'Z')
b = str[ 1] - 'A';
if(str[ 2] >= 'A' && str[ 2] <= 'Z')
c = str[ 2] - 'A';
if(b != - 1)
pre[b] = a;
if(c != - 1)
pre[c] = a;
}
/*for(i=0;i<26;i++)
cout<<pre[i]<<" ";
cout<<endl;*/
for(i = 1; i <= m; i++)
{
char ch1, ch2;
cin >> ch1 >> ch2;
int index1 = ch1 - 'A';
int index2 = ch2 - 'A';
bool flag = false;
int res1 = find(index2, index1);
//cout<<"res1="<<res1<<endl;
if(res1)
{
flag = true;
switch(res1)
{
case 1:
cout << "child" << endl;
break;
case 2:
cout << "grandchild" << endl;
break;
default:
for( int k = res1; k >= 3; k--)
cout << "great-";
cout << "grandchild" << endl;
break;
}
}
else
{
int res2 = find(index1, index2);
//cout<<"res2="<<res2<<endl;
if(res2)
{
flag = true;
switch(res2)
{
case 1:
cout << "parent" << endl;
break;
case 2:
cout << "grandparent" << endl;
break;
default:
for( int k = res2; k >= 3; k--)
cout << "great-";
cout << "grandparent" << endl;
break;
}
}
}
if(!flag)
cout << "-" << endl;
}
}
}//status:accepted
- 根据题目给的数据构建一棵二叉树
- 比如 题目给出的数据可以构成下面的二叉树
- A
- ↙↘
- BC
- ↙↘
- D E
- ↙↘
- F G
- 判断F和A是否具有直系关系
- 从F一直向上搜索
- F到E到C到A
- 找到了A说明F和A具有直属关系。
- 否则不具有直属关系。
九度OJ 1035:找出直系亲属(二叉树)相关推荐
- 九度[1035]-找出直系亲属
九度[1035]-找出直系亲属 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A, ...
- 九度oj题目1385:重建二叉树
题目1385:重建二叉树 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4419 解决:1311 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和 ...
- 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...
题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...
- Freckles - 九度 OJ 1144
Freckles - 九度 OJ 1144 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: In an episode of the Dick Van Dyke show, l ...
- 非常可乐(九度 OJ 1457)
非常可乐(九度 OJ 1457) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 1.题目描述: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是 seeyou 却不这么认为.因为每次当 see ...
- 九度OJ——1028继续畅通工程
题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修 ...
- Leagal or Not - 九度 OJ 1448
Leagal or Not - 九度 OJ 1448 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: ACM-DIY is a large QQ group where man ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...
- hdu3786 找出直系亲属 水题
题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
最新文章
- 广播站 PHP,让一实听见你的声音——“校园之声”广播站招募小记
- 推荐些在线小制作小工具
- Linux-常用系统管理命令
- java常见_Java 常用类
- IOS学习笔记二十NSSet和NSMutableSet
- ssm框架里面前端拿HTML写,ssm框架引入Vue,声明式渲染,标签的href拼接字符串
- bat获取命令返回值_redis中list和hash的基本命令和使用场景
- ftp linux 服务器 麒麟_阿里云ECS服务器搭建vsftpd
- html5游戏开发-零基础开发RPG游戏-开源讲座(四)
- windows xp 的开机黑屏只有光标闪动的解决方法
- java对接微信公众号
- error C2440: “类型转换”: 无法从“LPVOID”转换为“double
- Centos7 制作系统iso镜像文件
- 成功的客户关系项目管理实施案例的共同特点
- 2021年安全员-A证(江西省)报名考试及安全员-A证(江西省)考试平台
- 灵飞经3 印神无双 第十四章 印神古墓 3
- Android 9 Pie
- 初级中学理化生实验室建设与配备标准
- 金山办公测试开发面试总结
- 我的2014作的一手好死,2015求轻虐
热门文章
- 小程序实战1-项目总览
- 《iPad开发从入门到精通》——6.2节系统主界面
- LVS负载均衡DR模式+keepalived
- win7 nodejs找不到express命令
- 容灾技术中的数据一致性保障
- 程序员面试金典——7.3判断直线相交
- 程序员面试金典——1.7清除行列
- few-shot learning, zero-shot learning, one-shot learning,any-shot learning, C-way K-shot,Meta-learn
- 多层RNN的定义与理解
- 【信息学奥赛一本通 提高组】第一章 贪心算法