博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2387 Til the Cows Come Home
阅读量:7236 次
发布时间:2019-06-29

本文共 2687 字,大约阅读时间需要 8 分钟。

Description:

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's field has N (2 <= N <= 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 <= T <= 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+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 51 2 202 3 303 4 204 5 201 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.
 
题意:有n个点,m条边,现在问奶牛从第n个点到第一个点的最短路径是多少,也就是1~n的最短路径,(毕竟路是双向的,这里发现,POJ好喜欢奶牛的啊~~),直接套用模板中的任何一个就行了。
#include
#include
#include
using namespace std;const int N=1010;const int INF=0x3f3f3f3f;int G[N][N], dist[N], vis[N], n;void Init(){ int i, j; for (i = 1; i <= n; i++) { dist[i] = INF; vis[i] = 0; for (j = 1; j <= n; j++) G[i][j] = INF; G[i][i] = 0; }}void Spfa(int u){ int i, v; queue
Q; Q.push(u); dist[u] = 0; while (!Q.empty()) { v = Q.front(); Q.pop(); for (i = 1; i <= n; i++) { if (dist[i] > dist[v] + G[v][i]) { dist[i] = dist[v]+G[v][i]; if (!vis[i]) { Q.push(i); vis[i] = 1; } } } vis[v] = 0; }}int main (){ int m, a, b, c; while (scanf("%d%d", &m, &n) != EOF) { Init(); while (m--) { scanf("%d%d%d", &a, &b, &c); G[a][b] = min(G[a][b], c); G[b][a] = G[a][b]; } Spfa(1); printf("%d\n", dist[n]); } return 0;}

转载于:https://www.cnblogs.com/syhandll/p/4812448.html

你可能感兴趣的文章
RMAN内部原理介绍
查看>>
如何绕过ORA-00701错误和降低bootstrap对象的高水位
查看>>
linux虚拟化管理
查看>>
<?php $sql = <<<EOF 。。。。EOF;?>这种写法是什么意思
查看>>
[精讲]15-Winodws Server 2012 工作文件夹
查看>>
java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor 访问jsp报错-过滤器报错...
查看>>
如何更改Exchange服务器的传输队列数据库路径
查看>>
未来图灵发布《AI明星企业家热搜榜》
查看>>
Linux存储管理及硬盘分区、格式化、挂载
查看>>
Linux服务器时间不准确
查看>>
【AD】清楚windows下的不同凭据缓存
查看>>
没有如果,只需要去尝试
查看>>
LINUX下删除用户与主目录
查看>>
Remote Listener Server side Connect-Time Load Balancing
查看>>
程序开发时编写sql语句的注意事项
查看>>
Oracle 12c新特性对于业务上的一些影响总结
查看>>
基于redis的缓存机制的思考和优化
查看>>
IBM DS 5300存储硬盘故障数据恢复详解
查看>>
企业生产环境不同业务,系统分区建议(自定义分区布局)
查看>>
使用Verilog实现FPGA双列电梯控制系统
查看>>