家谱,又称族谱、宗谱等,是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书。皇帝的家谱称玉牒,如新朝玉牒、皇宋玉牒。它以记载父系家族世系、人物为中心,由正史中的帝王本纪及王侯列传、年表等演变而来。

家谱是一种特殊的文献,就其内容而言,是中国五千年文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。家谱属珍贵的人文资料,对于历史学、民俗学、人口学、社会学和经济学的深入研究,均有其不可替代的独特功能。

这一天蒜头君拿到了自己家的家谱,蒜头君便想知道,在自己家的家谱中,每位祖先有多少直系后代(直系后代包括他的孩子和他孩子的直系后代)。但是家族历史源远流长,家谱实在太庞大了,自己一个人完全数不过来。热心的你便自告奋勇帮蒜头君写一个程序,来统计每位祖先有多少直系后代。

输入格式
输入的第一行有一个整数 n(1≤n≤100000),表示家谱中的总人数。

接下来读入 n−1 行,每行有两个整数 x(1≤x≤n), y(1≤y≤n),表示 x 是 y 的父母。

输出格式
输出 n 行,每行有一个整数,表示第 i 个人有多少个直系后代。

样例输入

4
1 2
1 3
2 4

样例输出

3
1
0
0

解题思路,用vector数组存每个数字的后代,找出界家谱老祖宗即——根节点,从老祖宗开始dfs,记录每个孩子的后代,并在每个孩子的递归处返回后代数+1,最终连加得到总的后代数

#include <cstdio>
using namespace std;
#include <vector>int n;
vector<int> son[100005];
bool f[100005];  //找根节点的标记数组
int ans[100005];  //存储结果int dfs(int r) {int ret = 0;for (int i = 0; i < son[r].size(); ++i) {ret += dfs(son[r][i]);  //对每个孩子进行dfs,连加,最终得总的直系后代数}ans[r] = ret;return ret + 1;   //返回的结果要包括自己,例如左孩子的所有孩子加上自己就是左子树的结点个数
}int main() {scanf("%d", &n);for (int i = 0; i < n - 1; ++i) {int a, b;scanf("%d %d", &a, &b);son[a].push_back(b);f[b] = true;  //说明b已经是别人的孩子}int root = 0;for (int i = 1; i <= n; ++i) { if (!f[i]) {   //找到根节点root = i;break;}}dfs(root);for (int i = 1; i <= n; ++i) {printf("%d\n", ans[i]);}while (1);return 0;
}

计蒜客——家谱(深度搜索)相关推荐

  1. 计蒜客 家谱 vector临接矩阵+dfs

    题意:输入一个n,接下来有n-1行. 输入父亲和儿子 求n个人,每个人的直系后代有多少. 思路:vector建临接矩阵. #include<iostream> #include<cs ...

  2. [计蒜客][搜索枚举]文具店

    题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛) 算法标签 深度优先搜索 题目描述 思路 意思就是将字符串分割成k串,累加答案尽可能的小 dfs枚举 AC代码 #include<iostream ...

  3. 计蒜客题解——T1769:最大岛屿

    题目相关 题目链接 计蒜客,https://nanti.jisuanke.com/t/T1405. 我的OJ,http://47.110.135.197/problem.php?id=5254. 题目 ...

  4. 无脑博士的试管们java_计蒜客 无脑博士和他的试管们

    标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...

  5. C - Digital Path 计蒜客 - 42397 05-29

    C - Digital Path 计蒜客 - 42397 题意: 题意就是给出一个n ∗ m的数字矩阵每个矩阵元素之间只能上下左右走,而且下一个位置必须比当前位置的数字大1,入口和出口必须数边缘元素, ...

  6. 计蒜客题解——T1414:抠图

    题目相关 题目链接 计蒜客,https://nanti.jisuanke.com/t/T1414. 我的 OJ,http://47.110.135.197/problem.php?id=4768. 题 ...

  7. 5.计蒜客ACM题库.A2234 结果填空:青蛙爬井

    计蒜客ACM题库.A2234 结果填空:青蛙爬井 有一口深度为 high 米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬 up 米,夜里则顺井壁向下滑 down 米. 若青蛙从某个早晨开始向外爬 ...

  8. 坑!计蒜客——乳草的侵占

    计蒜客--乳草的侵占(BFS) BFS一直写不会,可能是多加了个队列,写起来不是太容易.不过最近还是稍微入门了BFS,跟DFS差别不太大,还是由三个部分组成--出口.标记.枚举. DFS的主要的思想就 ...

  9. 2020蓝桥杯B 组省赛计蒜客模拟赛(一)题解

    2020蓝桥杯省赛 B 组计蒜客模拟赛(一)目录 试题 A:有趣的数字(结果填空) 试题 B:爬楼梯(结果填空) 试题 C:七巧板(结果填空) 试题 D:苹果(结果填空) 试题 E:方阵(结果填空) ...

最新文章

  1. 关于ASP.NET MVC P5中CheckBox的HtmlHelper方法的bug。
  2. linux 开启LACP 单端口,linux – 使用FTOS在Force10 S50N上PXE启动LACP主机
  3. 判断两个数组内容是否相同
  4. 【MySQL性能优化】概述与优化方面(一)
  5. 总结了200道经典的机器学习面试题 (附参考答案)
  6. 归并排序 java 迭代_经典排序算法之归并排序(示例代码)
  7. Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源
  8. 查询sql语句是否使用索引
  9. spring init
  10. 2022年计算机二级考试C语言程序设计冲刺题及答案
  11. 添加内核驱动模块(1)(mydriver.c+ Konfig+Makefile )
  12. 三次hermite插值matlab,三次hermite插值
  13. 【C语言】二维数组指针,字符数组指针输出程序实例(注释详细)
  14. 计算机系统加载失败怎么回事,驱动加载失败怎么办,驱动加载失败的原因和解决方法...
  15. 光耦合器的工作原理和作用
  16. 邮箱邀请涵wm05.html文件怎么阅读,群邮箱里发来的“邀请函”暗藏木马,千万别点后面的链接...
  17. 谷歌浏览器插件开发之 manifest.json 配置说明
  18. 346雷达有多少tr组件_TR组件是什么?
  19. SSM框架学习(一)————SSM框架简介
  20. Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志

热门文章

  1. ros接入IMU数据,打包发布topic
  2. Excel导入数据轻松生成智能图表,助力数据分析
  3. MapboxMap 加载Amap地图图源
  4. 【Vue】16.vue项目里引入百度统计
  5. 如何用百度统计页面中多个链接的pvuv,并且页面还不需要跳转
  6. C语言求最大公约数(四种)
  7. 技嘉服务器主板是什么型号,ASUS华硕/技嘉/微星MSI工作站服务器主板型号对比说明,注入win7驱动工具...
  8. 实现iconfont图标渐变
  9. 数据库怎么用Java做封面_一个毫无用处的公众号封面生成器
  10. 3322域名更新程序