HDU_2544 最短路(Dijkstra)
很裸的最短路径问题,这里用Dijkstra做的,前边已经写过Floyd和SPFA算法
SPFA:http://www.cnblogs.com/vongang/archive/2011/08/16/2141334.html
Floyd:http://www.cnblogs.com/vongang/archive/2011/08/16/2141019.html
My Code:
#include <iostream>#include <cstring>#include <cstdio>using namespace std; const int maxnum = 107;const int inf = 999999; int dist[maxnum];int map[maxnum][maxnum];int vis[maxnum];int n, m; void Dijkstra(){int i, j; memset(vis, 0, sizeof(vis));for(i = 1; i <= n; i++) { dist[i] = map[1][i]; vis[i] = 0; } dist[1] = 0; vis[1] = 1;for(i = 2; i <= n; i++) {int flag, min = inf;for(j = 1; j <= n; j++)if(!vis[j] && dist[j] < min) { flag = j; min = dist[j]; } vis[flag] = 1;for(j = 1; j <= n; j++)if(!vis[j] && map[flag][j] < inf) {int newdist = dist[flag] + map[flag][j];if(newdist < dist[j]) dist[j] = newdist; } }}int main(){//freopen("data.in", "r", stdin); int i, j, a, b, c;while(scanf("%d%d", &n, &m), n||m) {for(i = 1; i <= n; i++)for(j = 1; j <= n; j++) map[i][j] = inf;while(m--) { scanf("%d%d%d", &a, &b, &c);if(c < map[a][b]) map[a][b] = map[b][a] = c; } Dijkstra(); printf("%d\n", dist[n]); }return 0;}
转载于:https://www.cnblogs.com/vongang/archive/2011/08/16/2141446.html
HDU_2544 最短路(Dijkstra)相关推荐
- 图论-最短路Dijkstra算法详解超详 有图解
整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...
- 单源最短路 Dijkstra算法 和 SPFA算法
单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...
- 最短路 dijkstra模板
最短路 dijkstra模板 #pragma warning(disable:4996) #include<iostream> #include<string> #includ ...
- HDOJ 2112 HDU Today (最短路 Dijkstra SPFA)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Til the Cows Come Home(最短路-Dijkstra)
Til the Cows Come Home(最短路-Dijkstra) judge:https://vjudge.net/contest/297882#problem/A Time limit:10 ...
- Codeforces.1051F.The Shortest Statement(最短路Dijkstra)
题目链接 先随便建一棵树. 如果两个点(u,v)不经过非树边,它们的dis可以直接算. 如果两个点经过非树边呢?即它们一定要经过该边的两个端点,可以直接用这两个点到 u,v 的最短路更新答案. 所以枚 ...
- HDU 2066-一个人的旅行(最短路Dijkstra)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 单源最短路——dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问 ...
- 算法提高课-图论-单源最短路的综合应用-AcWing 342. 道路与航线:最短路dijkstra、拓扑排序 、综合题、好题
题目分析 来源:acwing 分析: 道路:双向,边权非负, 航线:单向,边权可正可负,且无环. 根据题意,点可以分为很多团(连通块),团内部只有道路(道路是双向的,而且是连通的,所以不能存在航线,否 ...
最新文章
- opensuse安装nginx
- 运维企业专题(5)LVS高可用与负载均衡中篇——VS/DR模式配置详解
- 存储格式之大端小端详解
- 使用 Ant 自动生成项目构建版本
- 渗透知识- Windows系统目录、服务、端口、注册表
- Object-c学习之路二(oc内存管理黄金法则1)
- WebService(1)名词了解
- linux配置临时IP和永久IP
- 一、从Windows消息机制说起
- python使用xlrd模块读写excel
- multi mysql_mysqld_multi 的使用方法
- 程序是怎样跑起来的:第一章-对程序员来说CPU是什么
- [SCOI2005][BZOJ1085] 骑士精神
- 如何在Mac上控制对日历的访问?
- 一个软件工程师在北京的反省
- 简述deque容器的插入删除原理
- 大数据调度工具之Oozie
- 火狐一键检测自己的邮箱是否被泄露信息 输入邮箱即可查看是否安全
- 百度地图根据缩放级别显示不同的marker点和窗口内容
- TortoiseGit拉取gitee代码