文章目录

  • 题目描述
  • 代码实现
  • 码后反思

题目描述

代码实现

//我觉得使用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;
}

码后反思

  1. 第一遍我做错了,我只考虑了parent,没有考虑child,原来题目的意思是求前一个是后一个什么关系。我没有理解清楚题目的意思。。。
  2. 这道题虽然出在并查集,但是我使用了DFS。。。

⭐⭐⭐【DFS+理解题意】找出直系亲属相关推荐

  1. hdu3786 找出直系亲属 水题

    题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. HDU3786 找出直系亲属【关系闭包】

    找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. 九度OJ 1035:找出直系亲属(二叉树)

    题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...

  4. KY122 找出直系亲属

    KY122 找出直系亲属 def cntGen(parentsDict, descendant, ascendant):if descendant not in parentsDict:return ...

  5. 九度[1035]-找出直系亲属

    九度[1035]-找出直系亲属 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A, ...

  6. 【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring

    http://codeforces.com/contest/805/problem/E [题意] 染色数是很好确定,最少染色数是max(si)(最小为1,即使所有的si都为0,这样是单节点树形成的森林 ...

  7. 九度1035:找出直系亲属并查集

    题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A ...

  8. 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的 ...

  9. DFS应用——找出无向图的割点

    [0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "DFS应用于找割点" 的idea 并用源代码加以实现: 0.2) 必须要事先 做个s ...

  10. 三个变量中怎么找出中间值_一文理解神经网络中的偏差和方差

    在深度学习中,数据过拟合,欠拟合的问题很常见,先总结一下:过拟合称为高方差,欠拟合称为高偏差. 可能只看偏差,方差不是很理解,下面先来个百度百科看一下. 偏差(统计学概念) 偏差又称为表观误差,是指个 ...

最新文章

  1. Android 一个绚丽的loading动效分析与实现!
  2. 各种门锁的内部结构图_双核CUP,电镀真金把手,0.3秒开锁,欧瑞博智能门锁S2评测...
  3. 如何设计一个良好的接口?
  4. J.U.C系列(三)Semaphore的使用
  5. 关于负载均衡的一切:总结与思考
  6. 文本过滤--grep 1
  7. Windows All 系统下载
  8. 外贸全流程30个邮件模板分享!
  9. 2021图像检索综述
  10. 最新最全的vue面试题+详细解答
  11. Linux如何不格式化挂载硬盘,linux下格式化硬盘与挂载硬盘
  12. BurpSuite CA证书安装(拦截HTTPS协议)
  13. 什么是51单片机最小系统?
  14. 第五章(3)行逻辑链接的顺序表
  15. 华为机试真题 C 实现【非严格递增连续数字序列】【2022 Q4新题】
  16. 数据结构(java版)SortedSeqList(排序顺序表)
  17. 部署Kubernetes kube-apiserver启动失败
  18. IPM模块短路及对地短路剖析
  19. jzoj6384. 【NOIP2019模拟2019.10.23】珂学家
  20. 什么是BS结构,什么是CS结构?

热门文章

  1. python实现火车票查询
  2. 计算机与经济学:天造地设的一对
  3. 射频混频器matlab,射频(RF)采样:数字混频器能使混频操作妙趣横生
  4. ubuntu 打开任务管理器命令行命令
  5. Get rid of annoying security alerts in Microsoft Outlook!
  6. 手机esn不可用怎么解决_什么是ESN,为什么我不担心它是否干净?
  7. 【51单片机】(手把手教你)1602液晶屏-基础篇
  8. python常用单词读法-Python常用单词
  9. git rebase
  10. ADXL345-数字加速度计