牛客编程巅峰赛S2第5场 - 钻石&王者 C.Tree III

题目链接

题目描述

给出一棵有n个节点的节点标号为1~n的有根树(根为第一个节点,并给出从第2个节点到第n个节点的父结点),请你求解它的“第二直径”的长度,即树上任意两点距离非严格的第二长距离为多少(也就是说,如果存在两条不同的,长度均为max的路径,则返回max)。
树:一张有n个节点,n-1条边的无向连通图。

示例1

输入

[1,2,3,4]

返回值

3

示例2

输入

[1,1,1,1]

返回值

2

图论定理,树的第二直径一定以树的直径的某一端为端点,求树的直径就是两段 DFS,然后再对直径的两端求一次 DFS,记录端点到其他所有点的距离,然后排序,显然第一第二大的为直径,第三大的就是第二直径,AC代码如下:

class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** @param e int整型vector 长度为n-1的数组,表示结点2到结点n的父结点* @return int整型*/const static int N=1e5+5;int d[N],vis[N],mx,pos,s;vector<int>g[N],ans;void dfs(int u){ans.push_back(d[u]);vis[u]=1;for(auto v:g[u]){if(!vis[v]){d[v]=d[u]+1;if(d[v]>mx){mx=d[v],pos=v;}dfs(v);}}}int tree3(vector<int>& e) {for(int i=0;i<e.size();i++){g[i+2].push_back(e[i]);g[e[i]].push_back(i+2);}memset(vis,0,sizeof(vis));memset(d,0,sizeof(d));mx=0;dfs(1);ans.clear();memset(vis,0,sizeof(vis));memset(d,0,sizeof(d));s=pos;mx=0;dfs(s);memset(vis,0,sizeof(vis));memset(d,0,sizeof(d));s=pos;mx=0;dfs(s);sort(ans.rbegin(),ans.rend());return ans[2];}
};

牛客编程巅峰赛S2第5场 - 钻石王者 C.Tree III相关推荐

  1. 牛客编程巅峰赛S2第5场 - 钻石王者 A.怕npy的牛牛

    牛客编程巅峰赛S2第5场 - 钻石&王者 A.怕npy的牛牛 题目链接 题目描述 牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行 ...

  2. 牛客编程巅峰赛S2第6场 - 钻石王者

    牛客巅峰赛钻石&王者场 前言 自从我一场从青铜打上钻石以后,我好像就打不了黄金场的哭唧唧(/(ㄒoㄒ)/~~),钻石王者场真呆不下去了 被各路神仙吊打 String II 解题思路:签到题,比 ...

  3. 牛客编程巅峰赛S2第7场 - 钻石王者

    前言 这一场真*爆0场,被自己的理解坑了,把那个子序列以为是字串了,原地爆炸,好亏好亏,第二题是一道博弈论,然鹅我就只有一种情况没想出来,还是挂了真滴难受 A.牛牛的独特子序列(二分) 解题思路: 题 ...

  4. 牛客编程巅峰赛S2第10场 - 青铜白银黄金题解报告

    文章目录 数学实验 奇怪的排序问题 XOR和 总结 数学实验 数学实验题目链接 题目描述 牛牛在做数学实验. 老师给了牛牛一个数字 nnn (1≤n≤10181≤n≤10^{ 18}1≤n≤1018) ...

  5. 牛客编程巅峰赛S1第7场 - 黄金钻石A-B-C

    比赛链接:牛客编程巅峰赛S1第7场 - 黄金&钻石 文章目录 A.牛牛打怪兽 DFS B.牛牛的冰激凌 贪心 C.数列求值 矩阵快速幂 A.牛牛打怪兽 DFS 题意 身为屯里第一剑士的牛牛来到 ...

  6. 牛客编程巅峰赛S1第6场 - 黄金钻石王者(总结)

    牛客编程巅峰赛S1第6场 - 黄金&钻石&王者(总结) A:牛牛爱奇数 题意 有一个由n个元素组成的数组,牛牛想要将所有的数都变成奇数(即:将所有的偶数都变成奇数),但是他的操作是:一 ...

  7. 牛客编程巅峰赛S1第2场 - 黄金钻石 1.规律 2.bfs

    链接:https://ac.nowcoder.com/acm/contest/6357/A 来源:牛客网 题目描述 牛牛重新定义了斐波那契数列,牛牛定义f(n) = f(n-1)+f(n+1); f( ...

  8. 牛客编程巅峰赛S1第3场 - 黄金钻石 A.简单题 B.dfs C.并查集

    链接:https://ac.nowcoder.com/acm/contest/6383/A 来源:牛客网 找卧底 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  9. 牛客编程巅峰赛S1第2场 - 青铜白银

    A.牛牛扔牌 链接:https://ac.nowcoder.com/acm/contest/6219/A 来源:牛客网 题目描述 牛牛现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成.点数为'1' ...

最新文章

  1. php怎么生成前端网页,PHP自动生成前端的表单框架
  2. 使用Async同步执行异步函数
  3. java安装显示更改_java 安装与配置
  4. 有软件开发,就要有软件测试!
  5. TCP之1460MSS和1448负载
  6. html实现横向轮播,js实现横向轮播效果
  7. 3DGIS产品层次结构
  8. 【离散数学】陪集的详解
  9. 红月OD反汇编实时显示坐标,背景色可透明也可以不透明
  10. 绿色软件联盟:杀毒软件已经进入空前弱智与混沌状态
  11. TypeError: Converting circular structure to JSON
  12. 将列表(含字典)数据写入Excel
  13. java设计模式-六大设计原则
  14. Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)
  15. 代码Verify简介
  16. C语言控制流编程试题,可编程控制器PLC试题及答案
  17. 直接拔掉Mac移动硬盘所造成的无法识别问题
  18. 2022山东省安全员C证考试题库及在线模拟考试
  19. mysql 主master 从 slaver 复制 配置详细
  20. Swift Web 开发之 Vapor - 入门(一)

热门文章

  1. 研学旅游实践教育的开展助力文旅产业发展
  2. ip冲突引起呼叫故障的问题处理过程
  3. 埃里森的演讲的一点想法
  4. 深度学习 - 26.TF TF2.x tf.feature_column 详解
  5. 奉贤区企业技术中心认定给予40万元财政支持
  6. Windows远程桌面提示出现身份验证错误,要求的函数不正确,这可能由于CredSSP加密数据库修正
  7. 突发!CPA或取消北京考区惹争议,曾经“飘香”的证书还香吗?
  8. 微信小程序|搭建一个博客小程序
  9. Java面对对象(多态)
  10. C++修炼之筑基期第四层 ——透过日期类看运算符重载 | 赋值运算符重载 | 取地址操作符重载