题目链接:http://lx.lanqiao.cn/problem.page?gpid=T32

题意:中文题诶~

思路:显然给出的地图是一颗树,若能求得树的直径 ans,则答案为:ans*(ans+1)/2 + 10*ans;

对于树的直径:若已知根节点root,则 ans 为 root 高度最大的两颗子树高度和,显然我们可以先dfs一遍找到 root 最高的子树并确定离 root 最远的那个节点 v ;

然后再以 v 为根节点,显然 v 只有一颗子树,那么这颗子树的高度即为此树的直径.只需从 v 出发再dfs一遍即可 ;

所以对于求树的直径我们可以先以任意一点为出发点dfs出距离此节点最远的节点v,再从v出发dfs一遍距离v最远的点,此时求出的距离即为直径;

代码:

 1 #include <stdio.h>
 2 #include <vector>
 3 #include <algorithm>
 4 #include <string.h>
 5 using namespace std;
 6
 7 vector<pair<int,int> >tree[100005];
 8 bool vis[100005];
 9 int end_root,Max_len;
10
11 void dfs(int x,int len){
12     vis[x]=true;
13     if(len>Max_len) Max_len=len,end_root=x;
14     for(int i=0;i<tree[x].size();i++){
15         if(!vis[tree[x][i].first]){
16             dfs(tree[x][i].first,len+tree[x][i].second);
17         }
18     }
19 }
20
21 int main(void){
22     int n;
23     while(~scanf("%d",&n)){
24         int max_val=0;
25         memset(tree,0,sizeof(tree));
26         for(int i=1;i<n;i++){
27             int a,b,c;
28             scanf("%d %d %d",&a,&b,&c);
29             tree[a].push_back({b,c});
30             tree[b].push_back({a,c});
31         }
32         Max_len=0;
33         memset(vis,0,sizeof(vis));
34         dfs(1,0);
35         memset(vis,0,sizeof(vis));
36         dfs(end_root,0);
37         long long ans=Max_len;
38         printf("%lld\n",ans*(1+ans)/2+10*ans);
39     }
40 }

View Code

转载于:https://www.cnblogs.com/geloutingyu/p/6871818.html

蓝桥杯T32(树的直径)相关推荐

  1. java 蓝桥杯 Huffuman树

    目录标题 问题描述 解题思路 代码 流程图 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用 ...

  2. 蓝桥杯重点(C/C++)(随时更新,更新时间:2023.2.9)

    点关注不迷路,欢迎推荐给更多人,大约两天更新一次,建议点赞收藏加关注 本次更新内容:日期类填空题快速求解 目录 1  技巧 1.1  取消同步(节约时间,甚至能多骗点分,最好每个程序都写上) 1.2  ...

  3. [蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)

    题目描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首 ...

  4. AcWing 蓝桥杯AB组辅导课 05、树状数组与线段树

    文章目录 前言 一.树状数组 1.1.树状数组知识点 1.2.树状数组代码模板 模板题:AcWing 1264. 动态求连续区间和 例题 例题1.AcWing 1265. 数星星[中等,信息学奥赛一本 ...

  5. 蓝桥杯 油漆面积【第八届】【省赛】【A组】线段树扫面线/求矩形相交面积/模拟

    资源限制 内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s X星球的一批考古机器人正在一片废墟上考古. 该区域的地面坚硬如 ...

  6. 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛(湖南) 暨 第九届湘潭市大学生程序设计比赛H.Highway(树的直径)

    Highway Accepted : 122   Submit : 393 Time Limit : 4000 MS   Memory Limit : 65536 KB Highway In ICPC ...

  7. 一些蓝桥杯的简单模拟题目

    3.xx大学的模拟题 1.基础知识 顺序 选择 循环 数组宁符数组 结构体 函数 全排列 multimap 1.*梦里的难题 生化危机血腥暴力的场面对小星星的冲击很大,晚上频繁地做起了梦,梦里他担负起 ...

  8. 数据结构中树的直径问题

    树的直径是指树的最长简单路.求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径: 原理: 设起点为u,第一次BFS找到的终点v一定是 ...

  9. Python冲击省一蓝桥杯 DFS集锦

    距离蓝桥杯38天 话不多说 直入主题 耐心看完 一定会对你有所帮助 有什么不懂的随时可以私信小郑 深搜虽然很难 但总要面对 如果总是逃避 那就很难进步! 下面呈现的内容将以题目来源+题目分析+代码+知 ...

  10. python蓝桥杯准备

    蓝桥杯题库 入门训练 A+B问题 数列排序 十六进制转八进制 十六进制转十进制 十进制转十六进制 特殊回文数 回文数 特殊的数字 杨辉三角形 查找整数 数列特征 字母图形 01字串 闰年判断 Fibo ...

最新文章

  1. UI设计培训中的扁平化理念
  2. 知识蒸馏:如何用一个神经网络训练另一个神经网络
  3. NLP文本生成模型数据准备及实战
  4. 智能搜索引擎---命题的确定
  5. 浅谈文本的相似度问题
  6. 迁移数据库到SQL on Linux Docker
  7. vnc oracle solaris,在Solaris下安装VNC 远程安装Oracle
  8. 计算机安全概论论文,计算机安全探讨论文毕业论文(7篇).doc
  9. Linux常用工具小结:(2) Mysql的rpm安装和编译安装
  10. 三菱fx2n64mr说明书_FX2N-64MR-001原理及应用三菱FX2N-64MR-001使用说明书 - 三菱
  11. Ubuntu 18.04 - 启动时停留在 start bpfilter
  12. NSAttributedString
  13. 【前端 · 面试 】HTTP 总结(二)—— HTTP 消息
  14. 5 张图带你搞懂容器网络的工作原理
  15. 阿里云发布ET奥运大脑,推进奥运进入数字时代
  16. C++数据范围及字节对照表
  17. Win10安装pdf虚拟打印机的方法
  18. 男人,得有足够征服女人的本钱
  19. 腾讯云即时通讯im之获取userSig
  20. 单位冲激信号 matlab,matlab单位冲激序列

热门文章

  1. 【渝粤教育】电大中专计算机职业素养 (11)作业 题库
  2. CC1310开发笔记
  3. 彻底关闭Windows更新
  4. 解决TS中“Cannot find module ‘path‘ or its corresponding type declarations.”
  5. MFC:读取整个记事本文件
  6. 翟菜花:从风流到下流,杜蕾斯新文案为何被人口诛笔伐?
  7. spark submit提交方式
  8. html文本框拖动全选,html文本框常见操作技巧
  9. win10 删除右键显卡菜单项
  10. 分智评25位最受欢迎CEO 微软中国梁念坚居首