游历魔法王国

**  魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。
  小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。
  如果小易到达过某个城市就视为小易游历过这个城市了,小易现在要制定好的旅游计划使他能游历最多的城市,请你帮他计算一下他最多能游历过多少个城市(注意0号城市已经游历了,游历过的城市不重复计算)。
**

输入描述:
输入包括两行,第一行包括两个正整数n(2 ≤ n ≤ 50)和L(1 ≤ L ≤ 100),表示城市个数和小易能行动的次数。
第二行包括n-1个整数parent[i](0 ≤ parent[i] ≤ i), 对于每个合法的i(0 ≤ i ≤ n - 2),在(i+1)号城市和parent[i]间有一条道路连接。
输出描述:
输出一个整数,表示小易最多能游历的城市数量。
输入例子1:
5 2
0 1 2 3
输出例子1:
3

IDEA

**  只要找到最长的一条路径就好,只要保证最长路径只走一次,多余的步数再去访问其他节点,就能计算能够访问的最多节点数。
  (1) 如果允许走的步数L小于等于最长路径,那么就直接只在最长路径上走,这样可以不重复地走完,步数为走过的边数L,经过的点数为L+1
  (2) 如果允许走的步数L大于最长路径,那么需要走其他的分支,一旦经过,至少每条边走两次,并且只要两次就能完成读取点,所以其他路径上的点数为(L-maxDepth)/2,maxDepth为树的深度,也就是最长路径上的边数。此时经过的点数为maxDepth+(L-maxDepth)/2+1,如果点数大于n,则输出n,否则直接输出总点数。
**

Solution

#include <iostream>
#include <vector>
#include <sstream>using namespace std;static const auto _____ = []()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);return nullptr;
}();int dep(int i, vector<int> const &parent, vector<int> &depth)
{if (i == 0)return 0;if (depth[i] == 0){depth[i] = dep(parent[i], parent, depth) + 1;}return depth[i];
}int main()
{string line;getline(cin, line);stringstream cinstream(line);int n, L;cinstream >> n >> L;cinstream.clear();getline(cin, line);cinstream.str(line);vector<int> parent(n);vector<int> depth(n);auto maxDepth = 0;for (int i = 1; i < n; ++i){int p;cinstream >> p;parent[i] = p;if (dep(i, parent, depth) > maxDepth){maxDepth = depth[i];}}auto max = 0;auto s = (maxDepth + (L - maxDepth) / 2 + 1);if (L <= maxDepth)max = L + 1;else if (s > n)max = n;else max = s;std::cout << max << std::endl;return 0;
}

网易2018校招——04.游历魔法王国相关推荐

  1. 网易2018校园招聘:游历魔法王国 [python]

    ''' [编程题] 游历魔法王国 时间限制:1秒 空间限制:32768K 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当 ...

  2. 网易编程题 游历魔法王国 (Python)

    游历魔法王国(python) 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多 ...

  3. 魔法币 java_网易2018校招笔试编程题-魔法币 java实现

    魔法币 原题 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币. 魔法机器1:如果投 ...

  4. 【牛客】网易2018校招数据分析师笔试解析

    [牛客]网易2018校招数据分析师笔试解析 * 选择题根据牛客网下方讨论整理,三道大题均为自己答案,欢迎大家讨论并给予指正. (https://www.nowcoder.com/test/107788 ...

  5. 数据分析真题日刷 | 网易2018校招数据分析师笔试卷

    今日真题 网易2018校招数据分析师笔试卷(来源:牛客网) 题型 客观题:单选20道 主观题:问答1道,编程2道 完成时间 120分钟 牛客网评估难度系数 3颗星 ❤️ 「更多数据分析真题」 < ...

  6. 游历魔法王国(牛客网 网易2018校招题 图论)

    链接:https://www.nowcoder.com/questionTerminal/f58859adc39f4edc9cd8e40ba4160339 来源:牛客网 魔法王国一共有n个城市,编号为 ...

  7. ## (网易2018校招笔试)[编程题] 游历魔法王国

    题目 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次. 如果小易到 ...

  8. 网易2018编程题之游历魔法王国

    题目描述: 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次. 如果 ...

  9. 2018网易--游历魔法王国

    题目: 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次. 如果小易 ...

最新文章

  1. 【jsp】使用get方法传值的格式
  2. 检测跟踪 DeepSOCIAL:基于YOLOv4的人群距离监测 集检测、跟踪以及逆透视映射一体的系统
  3. 《C++ Primer 5th》笔记(8 / 19):IO库
  4. CVPR 2021 | 商汤提出最强时序动作提名修正网络:TCANet
  5. netty搭建简单的文件服务器
  6. Spark团队开源新项目MLflow发布0.2版本,内置TensorFlow集成
  7. Android动画-帧动画
  8. 高中电子技术——二极管的类型和作用
  9. 推荐一款DataGridView的打印解决方案
  10. “领跑者”计划倒逼光伏产业升级效果显现
  11. [经验教程]iPhone苹果手机iOS系统App Store怎么下载手机APP到苹果iPhone手机?
  12. 根据IP获取国家代码
  13. 《我和PIC单片机:基于PIC18》——2.2 MPLAB IDE集成开发环境
  14. Laravel 博客开发|网站打开速度优化
  15. 电信中兴光猫ZXHN F650超管密码获取工具
  16. idea如何给main函数中的args[] 字符串数组赋值
  17. java/php/net/python智能手机参数分析平台设计
  18. 伦敦银实时行情最新解读
  19. 【Java用法】使用Java导出word文档的解决方案(适用于从服务器上下载到本地电脑)
  20. HTML中自关闭的标签

热门文章

  1. offsetWidth和width的区别 逻辑中断 delete运算符 。。。。
  2. 【C#】【报错解决】分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。...
  3. Django关系类型字段
  4. 学习python有前途吗_学Python有前途吗?
  5. java minhash_MinHash概述及举例
  6. 采用MP188XX隔离式栅极驱动器系列构建电源系统
  7. Could not find setter for 0 on class
  8. 《荷塘月色》(三鹿版)
  9. Sina微博 SSO登陆过程分析
  10. P6跨级晋升P8,再到P10,我的11年前端成长之路