#1081 : 最短路径·一
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
万圣节的早上,小Hi和小Ho在经历了一个小时的争论后,终于决定了如何度过这样有意义的一天——他们决定去闯鬼屋!

在鬼屋门口排上了若干小时的队伍之后,刚刚进入鬼屋的小Hi和小Ho都颇饥饿,于是他们决定利用进门前领到的地图,找到一条通往终点的最短路径。

鬼屋中一共有N个地点,分别编号为1…N,这N个地点之间互相有一些道路连通,两个地点之间可能有多条道路连通,但是并不存在一条两端都是同一个地点的道路。那么小Hi和小Ho至少要走多少路程才能够走出鬼屋去吃东西呢?

提示:顺序!顺序才是关键。
输入
每个测试点(输入文件)有且仅有一组测试数据。

在一组测试数据中:

第1行为4个整数N、M、S、T,分别表示鬼屋中地点的个数和道路的条数,入口(也是一个地点)的编号,出口(同样也是一个地点)的编号。

接下来的M行,每行描述一条道路:其中的第i行为三个整数u_i, v_i, length_i,表明在编号为u_i的地点和编号为v_i的地点之间有一条长度为length_i的道路。

对于100%的数据,满足N<=103,M<=104, 1 <= length_i <= 10^3, 1 <= S, T <= N, 且S不等于T。

对于100%的数据,满足小Hi和小Ho总是有办法从入口通过地图上标注出来的道路到达出口。

输出
对于每组测试数据,输出一个整数Ans,表示那么小Hi和小Ho为了走出鬼屋至少要走的路程。

样例输入
5 23 5 4
1 2 708
2 3 112
3 4 721
4 5 339
5 4 960
1 5 849
2 5 98
1 4 99
2 4 25
2 1 200
3 1 146
3 2 106
1 4 860
4 1 795
5 4 479
5 4 280
3 4 341
1 4 622
4 2 362
2 3 415
4 1 904
2 1 716
2 5 575
样例输出
123
/*
注意看题目里的提示,和多观察数据,u->v有多条路,肯定要记录最短的啊
Dijkstra是解决单源最短路的算法(给定起点,起点到其他点的最短路),
基本思想:维护一个起点 到 各点 最短路的数组dis[MAXN]
每次 取离起点最近并没有用过的点 对 这个点可达的点 进行松弛,dis数组松弛过的点要开个vis[MAXN]数组标记用过的点,不能再次使用。
*/
AC_code:

#include <stdio.h>
#include <string.h>
#define MAXN 1005
#define INF 0x3f3f3f3f
int a[MAXN][MAXN];
int dis[MAXN];
int vis[MAXN];
int n,m,s,t;
void Dijkstra()
{for(int j = 1; j < n; j++){int aim = INF,pos;for(int i = 1; i <= n; i++){if(!vis[i]&&dis[i] < aim){aim = dis[i];pos = i;}}vis[pos] = 1;for(int i = 1; i <= n; i++){if(a[pos][i]!=INF && dis[i] > dis[pos] + a[pos][i]){dis[i] = dis[pos] + a[pos][i];}}}
}
int main()
{scanf("%d%d%d%d",&n,&m,&s,&t);int u,v,length;memset(dis,INF,sizeof(dis));for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){if(i == j)a[i][j] = 0;elsea[i][j] = INF;}}for(int i = 0; i < m; i++){scanf("%d%d%d",&u,&v,&length);if(a[u][v] > length||a[v][u] > length)a[u][v] = a[v][u] = length;}for(int i = 1; i<= n; i++){dis[i] = a[s][i];}vis[s] = 1;Dijkstra();printf("%d\n",dis[t]);return 0;
}

#1081 : 最短路径·一(Dijkstra)相关推荐

  1. C语言基本数据结构之三(图的广度及深度遍历,求单源最短路径的Dijkstra算法)

    上一篇主要讲了二叉树的先序,中序,后序遍历算法以及深度和节点的算法,这篇就讲一讲图的基本算法. 一.图的基本概念 1.1有向图G1: 有向图G是由两个集合V(G)和E(G)组成的,其中:V(G)是顶点 ...

  2. 最短路径的Dijkstra算法(邻接表)

    原文:http://blog.csdn.net/axiqia/article/details/50984464 描述 以邻接表作为存储结构实现,求解从给定源点到给定结束点的最短路径. 输入 从1开始表 ...

  3. 图的单源最短路径:Dijkstra算法实现

    本文介绍的是图的非负权值的单源最短路径问题.问题的提出是,对于有权图D,t提供源点v,要找到从v到其他所有点的最短路径,即单源最短路径问题,在本文中,解决这一问题,是普遍比较熟悉的Dijkstra算法 ...

  4. 最短路径问题-Dijkstra

    概述 与前面说的Floyd算法相比,Dijkstra算法只能求得图中特定顶点到其余所有顶点的最短路径长度,即单源最短路径问题. 算法思路 1.初始化,集合K中加入顶点v,顶点v到其自身的最短距离为0, ...

  5. 最短路径问题----Dijkstra算法的解释

    先上图: 现在要找到地点V1到其余各个地点的最短路径(图中数字的单位默认为km.).有一个原则是:永远找最小,确保无更小. 第一步:v1->v1,v1->v2,...v1->v7的距 ...

  6. 最短路径(Dijkstra、Bellman-Ford和SPFA算法)

    最短路径(Dijkstra.Bellman-Ford和SPFA算法) 前言 图的存储方式 邻接矩阵 邻接表 链表建立 利用vector 结构体 核心思路 Dijkstra算法 图解 基本思想 求解步骤 ...

  7. 最短路径问题 --- Dijkstra算法详解

    最短路径问题 最短路径问题 1.最短路径问题介绍 2.Dijkstra 算法思路 3.Dijkstra算法示例演示 4.Dijkstra算法的代码实现(c++) 参考 最短路径问题 1.最短路径问题介 ...

  8. 数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

    最短路径之Dijkstra算法 (一)Dijkstra算法 单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径: [算法概述]:Dijkstra算法适用于解决单源最短路径的问题.即:从源 ...

  9. 计算机网络最短路径路由选择,最短路径算法Dijkstra算法在路由选择中的应用.pdf...

    最短路径算法Dijkstra算法在路由选择中的应用.pdf 计算机与网络 江苏联合职业技术学院徐州机电工程分院 王恒青 江苏联合职业技术学院徐州生物工程分院 宋如敏 [摘要]本文介绍了路由算法的设计目 ...

最新文章

  1. Windows Phone 7 不温不火学习之《创建用户控件》
  2. 进一步提升用户信息安全保护意识 小米安全与隐私宣传月完满落幕
  3. 多模态人物识别技术及其在视频场景中的应用 | CSDN技术公开课
  4. NOIP2006提高组 能量项链
  5. commons-lang(time应用)
  6. 超详细Ubuntu Linux安装配置 Tomcat
  7. 3D Mapping with an RGB-D Camera(RGBD SLAM V2 )论文笔记
  8. 介绍MFSideMenu左右滑动控件的使用
  9. Go语言sync包的应用详解
  10. 2_C语言中的数据类型 (六)浮点数
  11. L2C中Lustre语义的环境定义
  12. H5测试是怎么做的?
  13. JMETER java.net.SocketException: Connection reset 报错解决方案
  14. Oracle数据库修改用户密码
  15. matlab里的deploy,MATLAB deploytool simulink未定义函数'load_system'
  16. 我的R 之路: R最常见的小基础。。。。。。。。
  17. easypoi插入超链接
  18. 全球与中国抗辐射相机市场深度研究分析报告
  19. 小程序推广换量经验分享
  20. Spring Boot AOP处理方法的入参和返回值

热门文章

  1. linux2.6添加新硬盘,Linux_TurboLinux11添加新硬盘方法,一.Linux的硬盘识别2.6 kernel - phpStudy...
  2. 向xxxhub发了一个数据包,发现了···
  3. dython:Python数据建模宝藏库
  4. 52条实用经验,SQL优化不再难!
  5. 翻遍全网!这4个Python项目最良心!(含视频源码)
  6. 如何判断一家互联网公司要倒闭了?
  7. redis java应用_Java+Redis应用(第一章)
  8. case when影响性能吗_端子台的性能受航空插头插针插孔的影响吗?
  9. 远离盛行道德绑架的团队
  10. Host 'controller' is not mapped to any cell