C++[POJ1849]铲雪车问题——树形DP求出树的直径

博客详细解析了如何使用C++和树形DP解决POJ1849铲雪车问题,其中关键在于找到树的直径以最小化燃料消耗。通过构建模型,博主指出即使有多个铲雪车,问题本质仍是找到最短路径的策略,即树的直径减去必须经过两次的边的总长度。文章还提示了树的直径计算方法,并提供了相关博客链接作为参考。
摘要由CSDN通过智能技术生成

[POJ1849]铲雪车问题

时间限制: 1 Sec  内存限制: 128 MB

题目描述

大雪覆盖了整座城市,市政府要求冬季服务部门尽快将一些街道(列在一份清单中)的积雪清除掉以恢复交通。整个城市由许多交叉路口和街道构成,当然任意两个交叉路口都是直接或间接连通的。清单给出了最少的街道,使得这些街道的积雪清除后任意两个交叉路口之间有且仅有一条通路。

冬季服务部门有2辆铲雪车和2名司机,这2辆铲雪车的出发点相同,都位于某个交叉路口。无论街道上有没有积雪,铲雪车每前进一米都要消耗一升燃料。冬季服务部门要求司机在铲除清单上的所有街道的积雪的前提下,消耗燃料最少,铲完后车可以停在任意交叉路口。

 

输入

第1行:2个整数N,S。(1 < =N < = 100000,1 < = S < =N),N 为交叉路口总数,S为铲雪车出发的路口序号。路口的编号为1~N。

接下来的N-1行为清单上的街道,每一行包含三个用空格隔开的整数A,B,C,表示一条从交叉路口A到交叉路口B的街道,C为该街道的长度。单位为米,1 < = C < =1000

 

输出

第1行:一个整数,表示铲掉所有积雪所需的最少燃料。

 

样例输入

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

样例输出

6

 此题说到底其实一共有多少辆铲雪车都对结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值