HDU——3786找出直系亲属(DFS+回溯)
找出直系亲属
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1541 Accepted Submission(s): 621
当n和m为0时结束输入。
具体含义和输出格式参见样例.
ABC
CDE
EFG
FA
BE
0 0
-
这题真是醉了,有一个输出语句的循环少减了个1,WA一下午。
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define MM(x) memset(x,0,sizeof(x))
#define MMINF(x) memset(x,INF,sizeof(x))
typedef long long LL;
const double PI=acos(-1.0);
const int N=1010;
struct info
{
int to;
int pre;
int w;
};
info E[N];
int cnt,head[N],vis[N];
int r;
inline void add(int s,int t,int dx)
{
E[cnt].to=t;
E[cnt].pre=head[s];
E[cnt].w=dx;
head[s]=cnt++;
}
void init()
{
memset(head,-1,sizeof(head));
cnt=0;
}
void dfsdown(int s,int t,int sum)
{
if(s==t)
{
r=sum;
return ;
}
for (int i=head[s]; i!=-1; i=E[i].pre)
{
int v=E[i].to;
if(!vis[v]&&E[i].w==-1)
{
vis[v]=1;
dfsdown(v,t,sum+E[i].w);
vis[v]=0;
}
}
}
void dfsup(int s,int t,int sum)
{
if(s==t)
{
r=sum;
return ;
}
for (int i=head[s]; i!=-1; i=E[i].pre)
{
int v=E[i].to;
if(!vis[v]&&E[i].w==1)
{
vis[v]=1;
dfsup(v,t,sum+E[i].w);
vis[v]=0;
}
}
}
int main(void)
{
int i,j,n,m;
char rela[5],quer[5];
while (~scanf("%d%d",&n,&m)&&(n||m))
{
init();
for (i=0; i<n; i++)
{
scanf("%s",rela);
if(rela[1]!='-')
{
add(rela[0]-'A',rela[1]-'A',1);
add(rela[1]-'A',rela[0]-'A',-1);
}
if(rela[2]!='-')
{
add(rela[0]-'A',rela[2]-'A',1);
add(rela[2]-'A',rela[0]-'A',-1);
}
}
for (i=0; i<m; i++)
{
r=INF;
scanf("%s",quer);
if(quer[0]==quer[1])
{
puts("-");
continue;
}
vis[quer[0]-'A']=1;
dfsdown(quer[0]-'A',quer[1]-'A',0);
vis[quer[0]-'A']=0;
if(r==INF)
{
vis[quer[0]-'A']=1;
dfsup(quer[0]-'A',quer[1]-'A',0);
vis[quer[0]-'A']=0;
if(r==INF)
puts("-");
else
{
if(r==1)
puts("child");
else if(r==2)
puts("grandchild");
else
{
for (j=0; j<r-2; j++)
printf("great-");
puts("grandchild");
}
}
}
else//子代关系
{
r=-r;
if(r==1)
puts("parent");
else if(r==2)
puts("grandparent");
else
{
for (j=0; j<r-2; j++)
printf("great-");
puts("grandparent");
}
}
}
}
return 0;
}
HDU——3786找出直系亲属(DFS+回溯)的更多相关文章
- 九度OJ 1035:找出直系亲属(二叉树)
题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...
- hdu3786 找出直系亲属 水题
题意:找出直系亲属Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 1016 素数环(dfs + 回溯)
嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 一道很典型的dfs+回溯: 根据题意首先进行初始化,即第一个位置为1,然后进行dfs, ...
- HDU - 4763 找出特殊规律的串
在一个Text串中找出Pattern串E以满足EAEBE,A B可以是任意串 看一眼觉得woc好难,后来看一下样例AB为空也可以 找观察一下E既是前缀也是后缀,很容易联想到next 最优情况EEE,那 ...
- 九度OJ 1035:找出直系亲属 (二叉树、递归)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2380 解决:934 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外) ...
- 九度oj 题目1035:找出直系亲属
题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild ...
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu1298 T9(手机输入法,每按一个数字,找出出现频率最高的字串,字典树+DFS)
Problem Description A while ago it was quite cumbersome to create a message for the Short Message Se ...
随机推荐
- Android程序初体验
第一个程序的实现的最终功能是: 点击"正确"或者"错误"会得到一个是否正确的提示. 直接上效果图. 此次涉及代码编写的文件有4个: package co ...
- C#语言基础 Main 函数中变量 整型
在我们每次上网或者用电脑的时候,请输入你的xxx 或者你的名字(年龄/身高/学校/籍贯)是 在这里我们就要学到一些变量,就是不确定的东西 string a: //赋予变量 a ="内容& ...
- 51nod 1174 区间中最大的数(送盾题)
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. ...
- Hyperledger Fabric on SAP Cloud Platform
今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...
- linux下使用OpenCV的一些问题
完整正确的代码如下: import cv2 import numpy as np image = cv2.imread('Pictures/a.png') cv2.imshow('original_i ...
- 卷积网络中的通道(Channel)和特征图
转载自:https://www.jianshu.com/p/bf8749e15566 今天介绍卷积网络中一个很重要的概念,通道(Channel),也有叫特征图(feature map)的. 首先,之前 ...
- layui 数据table隐藏表头
$('.layui-table .layui-table-cell > span').css({'font-weight': 'bold'});//表头字体样式 /*$('th').css({' ...
- 使用prelu
一个使用方式:http://blog.csdn.net/xg123321123/article/details/52610919 还有一种是像relu那样写,我就是采用的这种方式,直接把名字从relu ...
- Jordan 标准型定理
将学习到什么 就算两个矩阵有相同的特征多项式,它们也有可能不相似,那么如何判断两个矩阵是相似的?答案是它们有一样的 Jordan 标准型. Jordan 标准型定理 这节目的:证明每个复矩阵都与一 ...
- Codeforces Round #272 (Div. 2)-A. Dreamoon and Stairs
http://codeforces.com/contest/476/problem/A A. Dreamoon and Stairs time limit per test 1 second memo ...