热门标签 | 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 }

 


推荐阅读
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
  • 题目编号:2049 [SDOI2008]Cave Exploration。题目描述了一种动态图操作场景,涉及三种基本操作:断开两个节点间的连接(destroy(a,b))、建立两个节点间的连接(connect(a,b))以及查询两节点是否连通(query(a,b))。所有操作均确保图中无环存在。 ... [详细]
  • Hanks博士是一位著名的生物技术专家,他的儿子Hankson对数学有着浓厚的兴趣。最近,Hankson遇到了一个有趣的数学问题,涉及求解特定条件下的正整数x,而不使用传统的辗转相除法。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 本文详细介绍了 Redis 中的主要数据类型,包括 String、Hash、List、Set、ZSet、Geo 和 HyperLogLog,并提供了每种类型的基本操作命令和应用场景。 ... [详细]
  • hlg_oj_1116_选美大赛这题是最长子序列,然后再求出路径就可以了。开始写的比较乱,用数组什么的,后来用了指针就好办了。现在把代码贴 ... [详细]
  • 本文通过C++语言实现了一个递归算法,用于解析并计算数学表达式的值。该算法能够处理加法、减法、乘法和除法操作。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 本文介绍如何编写 Python 程序,以获取并显示字符串中每个字符的 ASCII 值。 ... [详细]
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社区 版权所有