hdu 2544 最短路(图论:迪杰斯特拉||弗洛伊德算法)
来源:互联网 发布:网络报案中心我要报案 编辑:程序博客网 时间:2024/05/21 14:55
因为求的是两个点之间的最短路径
所以同样可以用floyd算法
我用的是迪杰斯特拉,从m的范围可以看出是稠密图
所以使用邻接矩阵,注意在每次输入后初始化邻接矩阵,以INF表示无边
代码如下:
#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#define MAXN 10010#define LL long long#define INF 0x7fffffffusing namespace std;int n, m;bool vis[MAXN];int d[MAXN];int g[MAXN][MAXN];void Dijstra(int s) { int i, j, x, m; memset(vis, 0, sizeof(vis)); for(i=1; i<=n; ++i) d[i] = INF; d[s] = 0; for(i=0; i<n; ++i) { m = INF; for(j=1; j<=n; ++j) if(!vis[j] && d[j]<m) m = d[x=j]; vis[x] = true; for(j=1; j<=n; ++j) { if(g[x][j]<INF && d[x]<INF) d[j] = min(d[j], d[x]+g[x][j]); } }}int main(void) { int i, j, x, y, w; while(scanf("%d%d", &n, &m) && n+m) { for(i=1; i<=n; ++i) for(j=i; j<=n; ++j) g[i][j] = g[j][i] = INF; for(i=0; i<m; ++i) { scanf("%d%d%d", &x, &y, &w); g[x][y] = g[y][x] = w; } Dijstra(1); cout << d[n] << endl; } return 0;}
15ms弗洛伊德版本:
#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#define MAXN 10010#define LL long long#define INF 0x7fffffffusing namespace std;int n, m;int g[MAXN][MAXN];void floyd() { int i, j, k; for(k=1; k<=n; ++k) for(i=1; i<=n; ++i) for(j=1; j<=n; ++j) if(g[i][k]<INF && g[k][j]<INF) g[i][j] = min(g[i][j], g[i][k]+g[k][j]);}int main(void) { int i, j, x, y, w; while(scanf("%d%d", &n, &m) && n+m) { for(i=1; i<=n; ++i) { g[i][i] = 0; for(j=i+1; j<=n; ++j) g[i][j] = g[j][i] = INF; } for(i=0; i<m; ++i) { scanf("%d%d%d", &x, &y, &w); g[x][y] = g[y][x] = w; } floyd(); cout << g[1][n] << endl; } return 0;}
0 0
- hdu 2544 最短路(图论:迪杰斯特拉||弗洛伊德算法)
- hdu-2544 最短路 弗洛伊德算法
- hdu 2544 最短路(弗洛伊德)
- 最短路-弗洛伊德算法
- 弗洛伊德最短路算法
- HDU 2544 最短路 (弗洛伊德模板)
- hdu 1874 畅通工程续(图论:两点之间最短路-弗洛伊德算法 || 贝尔曼福特算法)
- 最短路-弗洛伊德(Floyd)算法
- 最短路之弗洛伊德算法和模板
- 最短路之Floyd(弗洛伊德)算法
- 最短路之弗洛伊德and迪杰斯特拉
- 单源最短路算法HDU 2544 ( 最短路 )
- 算法笔记---最短路路径之Floyd(弗洛伊德)算法
- UVALive 5221 Page Hopping(最短路,弗洛伊德算法)
- WUST 1927 信使(最短路之弗洛伊德算法)
- HDU 2544 最短路(各种最短路算法的实现)
- HDU 2544 最短路(各种最短路算法的实现)
- hdu 2544 最短路(最短路算法之Dijkstra)
- 幢似匀未胤烙摆械剖呜计值冶撼压
- OCM实验-备份恢复-控制文件
- 当心甜食“中毒” 几个饮食控制血糖的秘密
- 播放器(FZU 2091)
- 验证素数(素数筛选法验证素数)
- hdu 2544 最短路(图论:迪杰斯特拉||弗洛伊德算法)
- JVM的垃圾回收机制详解和调优
- SGU 138 Games of Chess 构造
- jquery 取子节点及当前节点属性值
- 继承(2)
- 1069: [SCOI2007]最大土地面积
- IoT 解释
- 游戏运营笔记四数据分析
- poj2485