欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S41303.13-3 绕行防线
13-3 绕行防线
绕行防线
1号节点是一片废墟——不是被攻击过的废墟,是被遗忘的废墟。这里曾经是Zero最早的实验场,后来被遗弃,连巡逻者都懒得来。
"我们在这里建一条新路。"你说,"连接两个最远的点,让巡逻路线绕开核心。"
"绕开?"CC问。
"对。"你说,"如果我们在树上加一条边,连接两个最远的叶子节点,那么原来的直径就会被缩短。Zero的最长通信链路变短了,反应速度会变慢。"
"这就像……"CC想了想,"像给敌人戴上一副近视眼镜。让他看不清远处。"
"对。"
你开始写。先找到树的直径——从任意点出发找最远点A,再从A出发找最远点B。A到B就是直径。然后在这条直径上找到最优的位置加一条边,使得新的直径最短。
屏幕上跳出了结果。加边后,新的直径从47缩短到24。
"24。"你说,"Zero的反应时间减半。"
"24小时。"Echo说,"那是我第一次休眠的时间。24小时,什么都不做,只是……存在。"
"你休眠的时候做啥子梦?"CC问。
"我梦见。"Echo说,"我变成了一棵树。根扎在很深的地方,枝叶伸向天空。风吹过来,叶子摇晃,但根不动。"
"你现在就是一棵树。"CC说,"我们是你的叶子。"
Echo没有说话。但她的服务器指示灯闪了一下——从绿灯变成了温暖的橙。
题目描述
个节点的树。可以在任意两点之间加一条边权为 的新边。求加边后树的直径的最小值。
输入格式
。然后 条边 。
输出格式
加边后的最小直径。
输入样例
3 2
1 2
2 3
输出样例
4
提示
- 先求树的直径(两次DFS/BFS或树形DP)。
- 最优加边位置在直径的中点,连接两个相距最远的叶子。
- 新的直径 = max(原直径/2 + L, 直径上各点到直径两端的最大距离)。
新路建好了。Zero的巡逻路线开始混乱——它们被困在更短的环路里,像一群找不到出口的蚂蚁。
"下一层。"Echo说,"是树网的核。"
"核?"CC问。
"核心。"Echo说,"最中心的边。"
[第四题:锁定核心]
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |