问题 L(1190): 【基础算法】铲雪车问题

时间限制: 1 Sec   内存限制: 64 MB
提交: 132   解决: 56
[ 提交][ 状态][ 我的提交]

题目描述

大雪覆盖了整座城市,市政府要求冬季服务部尽快将一些街道(列在一份清单中)的积雪清除掉以恢复交通。整个城市由许多交叉路口和街道构成,当然任意两个交叉路口都是直接或间接连通的。清单给出了最少的街道,使得这些街道的积雪清除后任意两个交叉路口之间有且仅有一条通路。冬季服务部门只有一辆铲雪车和一名司机,这辆铲雪车的出发点位于某个交叉路口。无论街道上有没有积雪,铲雪车每前进一米都要消耗一升燃料。冬季服务部门要求司机在铲除清单上的所有街道的积雪的前提下,消耗燃料最少,铲完后车可以停在任意交叉路口。

输入

输入:第一行包含2个整数N,S。(1 < =N < = 100000,1 < = S < =N).N 为交叉路口总数,S为铲雪车出发的路口序号。路口的标号为1...N。接下来的N-1行为清单上的街道,每一行包含三个用空格隔开的整数A,B,C,表示一条从交叉路口A到交叉路口B的街道,C为该街道的长度。单位为米,1 < = C < =1000.

输出

输出:仅一行,包含一个整数,表示铲掉所有积雪所需的最少燃料。

样例输入

Copy (如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)

5 1
1 2 8
1 3 10
3 4 10
4 5 7

样例输出

43
分析:首先这个图两个点之间只有一条路,且n个点,n-1条边,所以这是一棵树。然后因为要让走过的路最短而除了最后一次为前面每次走到叶子节点后都要返回根,所以把所有权值的和乘2再减去树上的最长路即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
struct bian{int v,w,next;
}arr[400010];
int fir[200010],n,r,start,end,c,cnt,sum;
bool vis[200010];
int dfs(int x){vis[x]=1;int ans=0;for(int i=fir[x];i;i=arr[i].next){if(vis[arr[i].v])   continue ;int tmp=dfs(arr[i].v)+arr[i].w;ans=max(tmp,ans);}return ans;
}
int main(){scanf("%d %d",&n,&r);for(int i=1;i<n;i++){scanf("%d %d %d",&start,&end,&c),sum+=c;arr[++cnt].v=end,arr[cnt].w=c,arr[cnt].next=fir[start];fir[start]=cnt;arr[++cnt].v=start,arr[cnt].w=c,arr[cnt].next=fir[end];fir[end]=cnt;}printf("%d",sum*2-dfs(r));
}  

【基础算法】铲雪车问题(BZOJ1190)相关推荐

  1. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  2. 基础算法整理(1)——递归与递推

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...

  3. 暑期集训2:ACM基础算法 练习题G:POJ - 1298

    2018学校暑期集训第二天--ACM基础算法 练习题G  --  POJ - 1298 The Hardest Problem Ever Julius Caesar lived in a time o ...

  4. 暑期集训2:ACM基础算法 练习题C:CF-1008A

    2018学校暑期集训第二天--ACM基础算法 练习题A  --   CodeForces - 1008A Romaji Vitya has just started learning Berlanes ...

  5. 暑期集训2:ACM基础算法 练习题B:CF-1008B

    2018学校暑期集训第二天--ACM基础算法 练习题B  --   CodeForces - 1008B Turn the Rectangles There are nn rectangles in ...

  6. 暑期集训2:ACM基础算法 练习题A:CF-1008C

    2018学校暑期集训第二天--ACM基础算法 练习题A  --  CodeForces - 1008C Reorder the Array You are given an array of inte ...

  7. 暑期集训2:ACM基础算法 例2:POJ-2456

    2018学校暑期集训第二天--ACM基础算法 例二  --   POJ - 2456 Aggressive cows Farmer John has built a new long barn, wi ...

  8. 暑期集训2:ACM基础算法 例1:POJ-1064

    2018学校暑期集训第二天--ACM基础算法 例一  --  POJ - 1064 Cable master Inhabitants of the Wonderland have decided to ...

  9. 第02期 基础算法(Leetcode)刻意练习开营计划

    背景 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构与算法呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢.写程序这件事, ...

最新文章

  1. vue 不是内部或外部命令,也不是可运行的程序 或批处理文件
  2. JAVA增删改查XML文件
  3. TTS语音播报程序部署与配置
  4. 利用CRM中间件Middleware从ERP下载Customer Material的常见错误
  5. python曲线拟合_python如何实现数据的线性拟合
  6. 淘宝网Java五面:现场面试49题含答案!
  7. 用GDB调试程序(11)──查看运行时数据(2)-转
  8. mysql主主同步稳定吗_MySQL主主同步
  9. 莫言汕大致辞:马云、盖茨毕业之初都没什么了不起
  10. R语言分类变量独立性检验(Tests of independence)、使用Fisher精确检验fisher.test函数检验分类变量的独立性( test of independence)
  11. 计算机 去掉快捷方式箭头,桌面快捷键小箭头怎么去掉【图文介绍】
  12. win7安装程序无法配置计算机,windows安装程序无法将windows配置在此计算机的硬件上运行的解决方法...
  13. 清华软院、清华计科、南大计算机、中科院自动化所夏令营保研过程贴
  14. 成都普赛睿生物医药科技有限公司-IT岗位招聘
  15. 为什么那么多程序员害怕Python?
  16. WC2015 滚粗记
  17. mj-trace 代码分析
  18. RPC框架入门 学习梁飞的RPC
  19. 进程fork和exec ---Unix网络编程笔记
  20. vue2+elementui 饿了么ui的一些食用方法

热门文章

  1. php批量裁剪图片,怎么批量裁剪图片 按照一定的比例快速裁剪多张照片的方法,自定义裁剪图片大小...
  2. 徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的?
  3. 中兴服务器r520v2,Dell R520服务器安装windows2008R2系统
  4. 原创|5万字详谈大数据面试题,面试必备
  5. bake lightmap in unity 2
  6. countupjs,一个有趣的数字翻滚动画
  7. 刘易远:如何提升自我赋能?
  8. Android之延时操作方法
  9. 32c语言编程,胸罩32C中的32和C是代表什么意思?
  10. 3.3.3 反相比例运算放大电路