【HihoCoder - 1851】D级上司 (树形图,dfs)
题干:
H公司一共有N名员工,编号为1~N,其中CEO的编号是1。除了CEO之外,每名员工都恰好有唯一的直接上司;N名员工形成了一个树形结构。
我们定义X的1级上司是他的直接上司,2级上司是他上司的上司,以此类推……
请你找出每名员工的D级上司是谁。
Input
第一行包含2个整数N和D。
以下N-1行每行包含一个整数,依次代表编号是2-N的员工的直接上司的编号。
对于50%的数据,1 ≤ N, D ≤ 10000
对于100%的数据,1 ≤ N, D ≤ 100000
Output
依次输出1~N的D级上司的编号,每个一行。如果某员工没有D级上司,输出-1。
Sample Input
5 2 1 1 3 3
Sample Output
-1 -1 -1 1 1
解题报告:
开一个数组记录dfs的过程中走过的节点,跟走迷宫差不多啊只不过网格图换成了树形图。。
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
vector<int> vv[MAX];
int n,d;
int ans[MAX],dep[MAX];
void dfs(int cur,int root,int deep) {dep[deep] = cur;if(deep - d >= 0) ans[cur] = dep[deep-d];int up = vv[cur].size();for(int i = 0; i<up; i++) {int v = vv[cur][i];if(v == root) continue;dfs(v,cur,deep+1);}
}
int main()
{memset(ans,-1,sizeof ans);cin>>n>>d;for(int i = 2,x; i<=n; i++) {scanf("%d",&x);vv[x].pb(i);vv[i].pb(x);}dfs(1,-1,0);for(int i = 1; i<=n; i++) {printf("%d\n",ans[i]);} return 0 ;}
总结:
这题其实应该加单向边但是双向边也可以AC,,我感觉原因就在于是个树形图,又因为是从根节点开始搜的所以每次搜到的边都是上级搜到下级的边,这可以算是个树形图的一个小结论了,其实也很常用,因为貌似所有的树形图都可以这样去使用双向边貌似还没出过错。
【HihoCoder - 1851】D级上司 (树形图,dfs)相关推荐
- hihocoder-1851-D级上司
hihocoder-1851-D级上司 #1851 : D级上司 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H公司一共有N名员工,编号为1~N,其中CEO的编号是 ...
- 【HihoCoder - 1881】特殊任务 (树形图,遍历)
题干: H公司一共有N名员工,编号1~N,其中CEO是1号员工.除了CEO之外,其他员工都有唯一的直接上司,所以N名员工上下级关系恰好形成了一棵树形结构. 我们知道每一名员工向H公司的代码库贡献了多少 ...
- SDNUOJ 1025.马踏飞燕(DFS||BFS))
Time Limit: 1000 MS Memory Limit: 32768 KB Description 无聊的陶陶准备编写一款游戏,名字就叫做"马踏飞燕",在这款游戏中有个一 ...
- 队列优化dijsktra(SPFA)的玄学优化
转载:大佬博客 最近想到了许多优化spfa的方法,这里想写个日报与大家探讨下 前置知识:spfa(不带任何优化) 由于使用较多 STLSTL ,本文中所有代码的评测均开启 O_2O2 优化 对一些数 ...
- NameNode与DataNode的工作原理剖析
NameNode与DataNode的工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS写数据流程 1>.客户端通过Distributed FileSys ...
- Hadoop部署方式-高可用集群部署(High Availability)
Hadoop部署方式-高可用集群部署(High Availability) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的高可用集群是建立在完全分布式基础之上的,详情请参 ...
- 高校毕业生如何实现“云端”就业
文章目录 前言 问题1 今年就业政策有何变化? 问题2 高校毕业生就业都有哪些渠道? 问题3 学校能为毕业生提供什么帮助? 问题4 "云招聘""云面试"是不是很 ...
- 蓝桥杯2013年第四届C/C++ B组省赛习题题解
目录 第一题:高斯日记(日期计算) 第二题:马虎的算式(全排列) 第三题:第39级台阶(dfs) 第四题:黄金连分数(递推+大数运算) 第五题:前缀判断(枚举) 第六题:三部排序 第七题:错误票据 第 ...
- SDNU__1025.马踏飞燕
无聊的陶陶准备编写一款游戏,名字就叫做"马踏飞燕",在这款游戏中有个一个100*100的坐标,把马放在任意一个坐标点,再把燕子放在任意一个坐标点,并且燕子不会移动,马只能按照象棋规 ...
最新文章
- 【牛腩新闻发布系统】开始后端02
- 进程间的通信方式(一):共享内存
- 圈子 | 苏宁易购产品经理:平台支撑型产品的思维方式
- 清华北大大动作上热搜了,怎么回事?
- java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理
- Anaconda中使用图形化界面创建虚拟环境
- Lesson 3.1 - Python Core Data Types
- HTML5+CSS3从入门到精通
- 免费快递查询API接口
- Java 案例:珠穆朗玛峰的高度
- 【pygame小游戏】摸鱼系列:”躲避粒子“小游戏在线玩,看谁才是”最强王者“?
- 2022进军阿里P6,6点面试经验总结
- 8cm等于多少像素_1寸照片尺寸是多少,对应的像素是多少
- 工作电路简单到令人发指的蓝牙芯片,一起看看
- 计算机网络 有效数据率,在计算机网络中,表征数据传输有效性的指标是( ) A.误码率 B.频带利用率 C.信道容量 D.传输速率...
- [转载]VBA创建数据透视表
- 聊聊并发(10)生产者消费者模式
- 全程干货!人物设计是什么?如何设计出好看的人物?
- SVN出现红绿双向箭头原因
- 2020年第十届亚太地区大学生数学建模
热门文章
- python 字符串比较忽略大小写的方法_python实现忽略大小写对字符串列表排序的方法...
- linux c c 常用的日志库,mslog: 一款超轻量级的C日志库,无需依赖额外的库,测试或移植过的系统有Linux(ubuntu,centos),Windows以及部分嵌入式设备;...
- 限制按钮点击_Android | 使用 AspectJ 限制按钮快速点击
- Codeforces Round #735 (Div. 2)(A-D)没有B
- java remove all_如何使用Java List等集合类的removeAll方法
- java类加载器_java底层内功 第一章,类加载器的任性
- cmake学习(一)静态库与动态库构建
- 计算机控制的点火系统由,第八节(点火系统)
- linux blender骨骼绑定,Linux下安装Blender
- java 接口强制转换_三分钟学习Java泛型中T、E、K、V、?的含义