计蒜客——家谱(深度搜索)
家谱,又称族谱、宗谱等,是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书。皇帝的家谱称玉牒,如新朝玉牒、皇宋玉牒。它以记载父系家族世系、人物为中心,由正史中的帝王本纪及王侯列传、年表等演变而来。
家谱是一种特殊的文献,就其内容而言,是中国五千年文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。家谱属珍贵的人文资料,对于历史学、民俗学、人口学、社会学和经济学的深入研究,均有其不可替代的独特功能。
这一天蒜头君拿到了自己家的家谱,蒜头君便想知道,在自己家的家谱中,每位祖先有多少直系后代(直系后代包括他的孩子和他孩子的直系后代)。但是家族历史源远流长,家谱实在太庞大了,自己一个人完全数不过来。热心的你便自告奋勇帮蒜头君写一个程序,来统计每位祖先有多少直系后代。
输入格式
输入的第一行有一个整数 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;
}
计蒜客——家谱(深度搜索)相关推荐
- 计蒜客 家谱 vector临接矩阵+dfs
题意:输入一个n,接下来有n-1行. 输入父亲和儿子 求n个人,每个人的直系后代有多少. 思路:vector建临接矩阵. #include<iostream> #include<cs ...
- [计蒜客][搜索枚举]文具店
题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛) 算法标签 深度优先搜索 题目描述 思路 意思就是将字符串分割成k串,累加答案尽可能的小 dfs枚举 AC代码 #include<iostream ...
- 计蒜客题解——T1769:最大岛屿
题目相关 题目链接 计蒜客,https://nanti.jisuanke.com/t/T1405. 我的OJ,http://47.110.135.197/problem.php?id=5254. 题目 ...
- 无脑博士的试管们java_计蒜客 无脑博士和他的试管们
标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...
- C - Digital Path 计蒜客 - 42397 05-29
C - Digital Path 计蒜客 - 42397 题意: 题意就是给出一个n ∗ m的数字矩阵每个矩阵元素之间只能上下左右走,而且下一个位置必须比当前位置的数字大1,入口和出口必须数边缘元素, ...
- 计蒜客题解——T1414:抠图
题目相关 题目链接 计蒜客,https://nanti.jisuanke.com/t/T1414. 我的 OJ,http://47.110.135.197/problem.php?id=4768. 题 ...
- 5.计蒜客ACM题库.A2234 结果填空:青蛙爬井
计蒜客ACM题库.A2234 结果填空:青蛙爬井 有一口深度为 high 米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬 up 米,夜里则顺井壁向下滑 down 米. 若青蛙从某个早晨开始向外爬 ...
- 坑!计蒜客——乳草的侵占
计蒜客--乳草的侵占(BFS) BFS一直写不会,可能是多加了个队列,写起来不是太容易.不过最近还是稍微入门了BFS,跟DFS差别不太大,还是由三个部分组成--出口.标记.枚举. DFS的主要的思想就 ...
- 2020蓝桥杯B 组省赛计蒜客模拟赛(一)题解
2020蓝桥杯省赛 B 组计蒜客模拟赛(一)目录 试题 A:有趣的数字(结果填空) 试题 B:爬楼梯(结果填空) 试题 C:七巧板(结果填空) 试题 D:苹果(结果填空) 试题 E:方阵(结果填空) ...
最新文章
- 关于ASP.NET MVC P5中CheckBox的HtmlHelper方法的bug。
- linux 开启LACP 单端口,linux – 使用FTOS在Force10 S50N上PXE启动LACP主机
- 判断两个数组内容是否相同
- 【MySQL性能优化】概述与优化方面(一)
- 总结了200道经典的机器学习面试题 (附参考答案)
- 归并排序 java 迭代_经典排序算法之归并排序(示例代码)
- Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源
- 查询sql语句是否使用索引
- spring init
- 2022年计算机二级考试C语言程序设计冲刺题及答案
- 添加内核驱动模块(1)(mydriver.c+ Konfig+Makefile )
- 三次hermite插值matlab,三次hermite插值
- 【C语言】二维数组指针,字符数组指针输出程序实例(注释详细)
- 计算机系统加载失败怎么回事,驱动加载失败怎么办,驱动加载失败的原因和解决方法...
- 光耦合器的工作原理和作用
- 邮箱邀请涵wm05.html文件怎么阅读,群邮箱里发来的“邀请函”暗藏木马,千万别点后面的链接...
- 谷歌浏览器插件开发之 manifest.json 配置说明
- 346雷达有多少tr组件_TR组件是什么?
- SSM框架学习(一)————SSM框架简介
- Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志
热门文章
- ros接入IMU数据,打包发布topic
- Excel导入数据轻松生成智能图表,助力数据分析
- MapboxMap 加载Amap地图图源
- 【Vue】16.vue项目里引入百度统计
- 如何用百度统计页面中多个链接的pvuv,并且页面还不需要跳转
- C语言求最大公约数(四种)
- 技嘉服务器主板是什么型号,ASUS华硕/技嘉/微星MSI工作站服务器主板型号对比说明,注入win7驱动工具...
- 实现iconfont图标渐变
- 数据库怎么用Java做封面_一个毫无用处的公众号封面生成器
- 3322域名更新程序