热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TiltheCowsComeHome(最短路问题,模板)

题目:https:vjudge.netproblemPOJ-2387Bessieisoutinthefieldandwantstogetbacktothebarnto

题目:https://vjudge.net/problem/POJ-2387 


Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get back as quickly as possible.

Farmer John&#39;s field has N (2 <&#61; N <&#61; 1000) landmarks in it, uniquely numbered 1..N. Landmark 1 is the barn; the apple tree grove in which Bessie stands all day is landmark N. Cows travel in the field using T (1 <&#61; T <&#61; 2000) bidirectional cow-trails of various lengths between the landmarks. Bessie is not confident of her navigation ability, so she always stays on a trail from its start to its end once she starts it.

Given the trails between the landmarks, determine the minimum distance Bessie must walk to get back to the barn. It is guaranteed that some such route exists.

Input

* Line 1: Two integers: T and N

* Lines 2..T&#43;1: Each line describes a trail as three space-separated integers. The first two integers are the landmarks between which the trail travels. The third integer is the length of the trail, range 1..100.

Output

* Line 1: A single integer, the minimum distance that Bessie must travel to get from landmark N to landmark 1.

Sample Input

5 5
1 2 20
2 3 30
3 4 20
4 5 20
1 5 100

Sample Output

90

Hint

INPUT DETAILS:

There are five landmarks.

OUTPUT DETAILS:

Bessie can get home by following trails 4, 3, 2, and 1.


 

最短路模板&#xff1a;

题意&#xff1a;一个人从n位置到1位置&#xff0c;输出最短路&#xff0c;其权值是多少&#xff1f;

分析&#xff1a;要充分理解最短路&#xff0c;图的概念。当从1位置到1位置时&#xff0c;此时的权值为0。其他无法到达的位置可以设为无穷大 INF

 

ac代码&#xff1a;

#include
#include
#include
#include
#includeusing namespace std;const int maxn &#61; 2*1e3&#43;5;
const int INF &#61; 1e9&#43;7;int val[maxn][maxn];
int d[maxn];
bool used[maxn];
int T, N;int pre[maxn];//dijkstra模板
void dijkstra(int s){fill(d, d&#43;N&#43;1, INF);fill(used, used&#43;N&#43;1, false);fill(pre, pre&#43;N&#43;1, -1);d[s] &#61; 0;while(true){int v &#61; -1;for(int u &#61; 1; u <&#61; N; u&#43;&#43;){if(!used[u]&&(v &#61;&#61; -1||d[u] }int main()
{scanf("%d%d", &T, &N);for(int i &#61; 0; i <&#61; N; i&#43;&#43;){for(int j &#61; 0; j <&#61; N; j&#43;&#43;){val[i][j] &#61; INF; //假设所有位置都无法到达 }val[i][i] &#61; 0; //在原地打转&#xff0c;其权值为0 }for(int i &#61; 0; i }

记录路径&#xff1a;用一个数组来记录路径&#xff0c;每次记录当前节点的前驱。然后反着输出。


而此题的最后一个节点是1&#xff0c;因此还原的时候从最后一个节点开始。

 

#include
#include
#include
#include
#include
#includeusing namespace std;const int maxn &#61; 2*1e3&#43;5;
const int INF &#61; 1e9&#43;7;int val[maxn][maxn];
int d[maxn];
bool used[maxn];
int T, N;int pre[maxn];//dijkstra模板
void dijkstra(int s){fill(d, d&#43;N&#43;1, INF);fill(used, used&#43;N&#43;1, false);fill(pre, pre&#43;N&#43;1, -1);d[s] &#61; 0;while(true){int v &#61; -1;for(int u &#61; 1; u <&#61; N; u&#43;&#43;){if(!used[u]&&(v &#61;&#61; -1||d[u] d[v] &#43; val[v][u]){d[u] &#61; d[v] &#43; val[v][u];pre[u] &#61; v; //记录每一个节点的前驱 } }}
}//路径还原
vector get_path(int t){vectorpath;for(; t !&#61; -1; t &#61; pre[t]){path.push_back(t);} reverse(path.begin(), path.end());return path;
}int main()
{scanf("%d%d", &T, &N);for(int i &#61; 0; i <&#61; N; i&#43;&#43;){for(int j &#61; 0; j <&#61; N; j&#43;&#43;){val[i][j] &#61; INF; //假设所有位置都无法到达 }val[i][i] &#61; 0; //在原地打转&#xff0c;其权值为0 }for(int i &#61; 0; i path;path &#61; get_path(1);for(int i &#61; 0; i }

 


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
author-avatar
xjoliemonicane_934
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有