试题 历届试题 大臣的旅费

资源限制
时间限制:1.0s   内存限制:256.0MB

问题描述

很久以前,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最多花费的路费是多少。

样例输入1

5
1 2 2
1 3 1
2 4 5
2 5 4

样例输出1

135

输出格式

大臣J从城市4到城市5要花费135的路费。

思路:

两遍dfs求树的直径,然后根据题目路费计算方式来计算路费即可

代码:

#include <iostream>
#include <cstring>
using namespace std;
const int N = 1e4+5;
struct Edge
{int from;int to;int val;int next;
}edge[N<<1];
int head[N],id;
void init()
{memset(head,-1,sizeof(head));id = 0;
}inline void add_edge(int from,int to,int val)
{edge[id].from = from;edge[id].to = to;edge[id].val = val;edge[id].next = head[from];head[from] = id++;
}
int maxx,pos;
void dfs(int u,int fa,int sum)
{for(int i = head[u]; ~i; i = edge[i].next){int to = edge[i].to;int val = edge[i].val;if(to != fa){dfs(to,u,sum+val);}}if(sum > maxx){pos = u;maxx = sum;}return;
}
int main()
{int n;cin>>n;init();for(int i = 1; i < n; i++){int x,y,v;cin>>x>>y>>v;add_edge(x,y,v);add_edge(y,x,v);}maxx = 0;dfs(1,0,0);maxx = 0;dfs(pos,0,0);int ans = (21 + maxx) * maxx / 2;cout<<ans<<endl;return 0;
}

历届试题 大臣的旅费(树的直径)相关推荐

  1. 历届试题 大臣的旅费(深搜 树的直径)

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

  2. 历届试题 大臣的旅费 树形DP

    题目链接:大臣的旅费 思路:锦囊说用广搜,可惜这题没说数据范围,担心复杂度太高,我就直接用的树形DP--求树的最远路径. 以城市1为整棵树的根结点,d(i)表示以i为根结点的子树的最远路径,还有一个f ...

  3. java 大臣的旅费_PREV-9-蓝桥杯-历届试题-大臣的旅费-java

    这道题我也不会写,然后参考了这篇----> https://blog.csdn.net/Look_star/article/details/88032821 只是我觉得他的描述还不够清晰,所以把 ...

  4. 历届试题 大臣的旅费 java

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

  5. [蓝桥杯][历届试题]小朋友排队(树状数组)

    题目描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的程度.开始的时候,所有小朋友的不高兴程度都是0. 如果某个小朋友 ...

  6. 蓝桥杯 大臣的旅费(Java dfs)

    历届试题 大臣的旅费 时间限制:1.0s 内存限制:256.0MB 问题描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的 ...

  7. java 大臣的旅费_蓝桥杯 大臣的旅费(Java dfs)

    历届试题 大臣的旅费 时间限制:1.0s 内存限制:256.0MB 问题描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的 ...

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

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

  9. 蓝桥杯 大臣的旅费 JAVA

    思路:该题要使用树的直径. 求树的直径:先从一个点DFS,找到一个最远的点v,然后以该点v作为起点再次DFS,找到点t,则v到t则为该树的最远直径. 1 import java.util.Arrays ...

最新文章

  1. [大数据之Spark]——Actions算子操作入门实例
  2. feture selection
  3. Linux下cron周期性计划任务
  4. struct sockaddr_nl 结构体 由来、含义以及使用——获取Linux路由表
  5. codeforces 486A-C语言解题报告
  6. 中小企业上云多地域办公组网,建立高质量云上内网环境
  7. js 添加事件 attachEvent 和 addEventListener 的区别
  8. 理想汽车10月份新增12家直营交付中心 蔚来第1000座充电站上线
  9. Spring Boot 之异步执行方法
  10. linux中demo当前目录,Linux pwd命令:显示当前路径
  11. 公司注销后公章怎么处理,自行保管风险
  12. android恢复微信好友,安卓微信删除好友怎么找回 找回好友详细方法
  13. wincc连接mysql数据库说明_wincc 数据库的连接方法
  14. python 移动文件 使用os.rename
  15. 吴式太极拳之北王-王茂斋先生
  16. c语言不报错但输不出正确结果,正则表达式,c++_C语言 正则表达式结果不对?,正则表达式,c++ - phpStudy...
  17. csdn中Markdown编辑器的使用
  18. Movavi Video Editor 15 Plus for mac(视频编辑软件)
  19. 【测试用例】文本框测试用例
  20. Mac不同应用之间切换使用不同输入法

热门文章

  1. git提交屏蔽某java类_git 删除某次指定的提交
  2. Xshell连接Ubuntu
  3. 年终复盘刚需!Python数据可视化技巧来了
  4. 自动驾驶「无视」障碍物:百度研究人员攻陷激光雷达
  5. vba单元格批量赋值,EXCEL——VBA对文件夹下所有表格的特定单元格赋值
  6. 限界分支法(队列方式)追踪解:01背包问题
  7. 走进JVM之一 自己编译openjdk源码
  8. 在java web项目中实现随项目启动的额外操作
  9. leetCode题解之Jewels and Stones
  10. 如何在国内下载Eclipse及其插件