题目描述
很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。
为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。
J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。
聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。也就是说走1千米花费11,走2千米要花费23。
J大臣想知道:他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?

输入
输入的第一行包含一个整数n,表示包括首都在内的T王国的城市数
城市从1开始依次编号,1号城市为首都。
接下来n-1行,描述T国的高速路(T国的高速路一定是n-1条)
每行三个整数Pi, Qi, Di,表示城市Pi和城市Qi之间有一条高速路,长度为Di千米。
输出
输出一个整数,表示大臣J最多花费的路费是多少。
样例输入
5
1 2 2
1 3 1
2 4 5
2 5 4
样例输出
135
思路:本质上就是找这一棵树上有哪两个点的路径最长,这样一弄不就是找树的直径了嘛。找出来之后然后再换算到花费上去就可以了。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=1e5+100;
struct edge{int to;int next;int v;
}e[maxx<<1];
int head[maxx<<1];
int vis[maxx];
int n,tot=0;inline void init()
{memset(head,-1,sizeof(head));memset(vis,0,sizeof(vis));
}
inline void add(int u,int v,int w)
{e[tot].next=head[u],e[tot].to=v,e[tot].v=w,head[u]=tot++;
}
inline void dfs(int u,int sum,int &_max,int &rt)
{if(sum>_max){_max=sum;rt=u;}vis[u]=1;for(int i=head[u];i!=-1;i=e[i].next){int to=e[i].to;if(vis[to]) continue;int v=e[i].v;dfs(to,sum+v,_max,rt);}
}
int main()
{scanf("%d",&n);init();int x,y,v;for(int i=1;i<n;i++){scanf("%d%d%d",&x,&y,&v);add(x,y,v);add(y,x,v);}int _max=0,rt;dfs(1,0,_max,rt);memset(vis,0,sizeof(vis));dfs(rt,0,_max,x);printf("%lld\n",((ll)(_max*10)+(ll)(1+_max)*_max/2ll));return 0;
}

努力加油a啊,(o)/~

[蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)相关推荐

  1. 问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量

    问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量 时间限制: 1Sec 内存限制: 128MB 提交: 2274 解决: 1438 题目描述 小张是软件项目经理,他带领3个开发组.工期紧 ...

  2. [蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论

    题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...

  3. [蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)

    题目描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 各组的核桃数量必须相同 各组内必须能平分核桃(当然是不能打 ...

  4. 蓝桥杯训练题1427: [蓝桥杯][2013年第四届真题]买不到的数目【筛选符合题目的数字。有点类似筛素数】

    题目链接: https://www.dotcpp.com/oj/problem1427.html 题目描述: 思路: 首先就是感觉这个题目好像有点不严谨.题目说的是输入为两个正整数,而且只要不大于10 ...

  5. [蓝桥杯][2013年第四届真题]带分数

    题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  6. [蓝桥杯][2013年第四届真题]危险系数(暴力+dfs)

    题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...

  7. [蓝桥杯][2013年第四届真题]剪格子(dfs)

    题目描述 历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. ±-–±-+ |10 1|52| ±-***–+ |20|30 1 ...

  8. [蓝桥杯][2013年第四届真题]买不到的数目(动态规划)

    题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...

  9. [蓝桥杯][2013年第四届真题]幸运数-模拟+dfs

    题目描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,- 1 就是第一个幸运数. 我们从2这个数开始.把所 ...

最新文章

  1. Idea用maven给springboot打jar包
  2. 最新最全国内外架构开源技术干货资料
  3. VS2008 + Silverlight初步学习
  4. 国防科大提出基于可变形三维卷积的视频超分辨,代码已开源
  5. rsa java ao_RSA加解密工具类
  6. python调用菜单响应事件_[Python] wxpython 编程触发菜单或按钮事件
  7. Keepalived实现高可用Nginx反向代理
  8. iterm2 agnoster主题设置中的一些踩坑 2018.8
  9. 自己动手写Docker系列 -- 5.3实现logs命令查看容器日志
  10. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换
  11. Windows 10安装labelImg(有压缩包链接)标注弹孔,生成.xml文件。
  12. Nginx配置虚拟主机
  13. 怎么把多个图片转成一个文字版的Word呢
  14. HMAC和密钥导出(HMAC and Key Derivation)
  15. 弹性布局案例实操(京东网页制作的草稿)
  16. 湖南大学校园网使用中遇到的问题
  17. CentOS7 win7 双系统安装
  18. new Foo().getName()经典面试题
  19. 5G/NR 随机接入过程学习总结
  20. linux红帽分区安装教程,RedHat Linux 9.0 硬盘安装教程手把手全部详细教程

热门文章

  1. IOS关于键盘的弹出和收起
  2. python大于小于1023python大于小于_PythonPAT 1023 Have Fun with Numbers
  3. python数据类型特点_Python 基础数据类型
  4. 使用Banner实现轮播展示
  5. python同时输入多个变量_python同时给多个变量赋值|python3教程|python入门|python教程...
  6. java多线程详细讲解_Java多线程例子讲解
  7. ajax读取评论数据,评论提交使用ajax提交实现
  8. # 删除注册表项键值_强制删除:让你的电脑上不再有“顽固”程序
  9. nacos使用_使用Nacos的CMDB实现微服务的就近访问!
  10. matlab 设计 18db,基于混沌理论的微弱MPSK信号解调方案设计