⭐⭐⭐【DFS+理解题意】找出直系亲属
文章目录
- 题目描述
- 代码实现
- 码后反思
题目描述
代码实现
//我觉得使用DFS更简单易懂一些
//采用邻接表记录
#include <cstdio>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
const int maxn = 30;vector<int> adj[maxn];
int n;
int m;
int res;void dfs(int u,int v,int depth){if(u==v){res=depth;return;}else{depth++;for(int i=0;i<adj[u].size();i++){dfs(adj[u][i],v,depth);}return;}
}void show(int cas){if(cas == 1){if(res==1){printf("parent\n");}else if(res==2){printf("grandparent\n");}else{string output = "grandparent";while(res>2){output = "great-"+output;res--;}cout<<output<<endl;} }else if(cas == 2){if(res==1){printf("child\n");}else if(res==2){printf("grandchild\n");}else{string output = "grandchild";while(res>2){output = "great-"+output;res--;}cout<<output<<endl;} }}int main(){while(scanf("%d",&n)!=EOF){scanf("%d",&m);//初始化for(int i=0;i<maxn;i++){adj[i].clear();} while(n--){char cx,cy,cz;//吸收换行 scanf("\n%c%c%c",&cx,&cy,&cz);int x = cx-'A';int y = cy-'A';int z = cz-'A';if(cy!='-'){adj[y].push_back(x);} if(cz!='-'){adj[z].push_back(x);}}while(m--){res=-1;char cx,cy;scanf("\n%c%c",&cx,&cy);int x = cx-'A';int y = cy-'A';dfs(x,y,0);if(res == -1){dfs(y,x,0);if(res == -1){printf("-\n");}else{show(2);}}else{show(1);} }}return 0;
}
码后反思
- 第一遍我做错了,我只考虑了parent,没有考虑child,原来题目的意思是求前一个是后一个什么关系。我没有理解清楚题目的意思。。。
- 这道题虽然出在并查集,但是我使用了DFS。。。
⭐⭐⭐【DFS+理解题意】找出直系亲属相关推荐
- hdu3786 找出直系亲属 水题
题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU3786 找出直系亲属【关系闭包】
找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 九度OJ 1035:找出直系亲属(二叉树)
题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...
- KY122 找出直系亲属
KY122 找出直系亲属 def cntGen(parentsDict, descendant, ascendant):if descendant not in parentsDict:return ...
- 九度[1035]-找出直系亲属
九度[1035]-找出直系亲属 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A, ...
- 【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring
http://codeforces.com/contest/805/problem/E [题意] 染色数是很好确定,最少染色数是max(si)(最小为1,即使所有的si都为0,这样是单节点树形成的森林 ...
- 九度1035:找出直系亲属并查集
题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A ...
- HDU_3786 找出直系亲属- softbar
Problem Description 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的 ...
- DFS应用——找出无向图的割点
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "DFS应用于找割点" 的idea 并用源代码加以实现: 0.2) 必须要事先 做个s ...
- 三个变量中怎么找出中间值_一文理解神经网络中的偏差和方差
在深度学习中,数据过拟合,欠拟合的问题很常见,先总结一下:过拟合称为高方差,欠拟合称为高偏差. 可能只看偏差,方差不是很理解,下面先来个百度百科看一下. 偏差(统计学概念) 偏差又称为表观误差,是指个 ...
最新文章
- Android 一个绚丽的loading动效分析与实现!
- 各种门锁的内部结构图_双核CUP,电镀真金把手,0.3秒开锁,欧瑞博智能门锁S2评测...
- 如何设计一个良好的接口?
- J.U.C系列(三)Semaphore的使用
- 关于负载均衡的一切:总结与思考
- 文本过滤--grep 1
- Windows All 系统下载
- 外贸全流程30个邮件模板分享!
- 2021图像检索综述
- 最新最全的vue面试题+详细解答
- Linux如何不格式化挂载硬盘,linux下格式化硬盘与挂载硬盘
- BurpSuite CA证书安装(拦截HTTPS协议)
- 什么是51单片机最小系统?
- 第五章(3)行逻辑链接的顺序表
- 华为机试真题 C 实现【非严格递增连续数字序列】【2022 Q4新题】
- 数据结构(java版)SortedSeqList(排序顺序表)
- 部署Kubernetes kube-apiserver启动失败
- IPM模块短路及对地短路剖析
- jzoj6384. 【NOIP2019模拟2019.10.23】珂学家
- 什么是BS结构,什么是CS结构?