hdu 2544 最短路(图论:迪杰斯特拉||弗洛伊德算法)
2014-07-26 16:21
369 查看
因为求的是两个点之间的最短路径
所以同样可以用floyd算法
我用的是迪杰斯特拉,从m的范围可以看出是稠密图
所以使用邻接矩阵,注意在每次输入后初始化邻接矩阵,以INF表示无边
代码如下:
15ms弗洛伊德版本:
所以同样可以用floyd算法
我用的是迪杰斯特拉,从m的范围可以看出是稠密图
所以使用邻接矩阵,注意在每次输入后初始化邻接矩阵,以INF表示无边
代码如下:
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #define MAXN 10010 #define LL long long #define INF 0x7fffffff using 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 << endl; } return 0; }
15ms弗洛伊德版本:
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #define MAXN 10010 #define LL long long #define INF 0x7fffffff using 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] << endl; } return 0; }
相关文章推荐
- hdu 2544 最短路 图论-求两点之间的最短距离 Dijkstra
- hdu-2544-最短路(迪杰斯特拉-最短路径)
- HDU-2544-最短路-迪杰斯特拉
- hdu 1874 畅通工程续(图论:两点之间最短路-弗洛伊德算法 || 贝尔曼福特算法)
- 最短路(HDU-2544)(迪杰斯特拉模板)
- hdu-2544-最短路(图论)
- HDU 2544 最短路 第一个图论问题。
- hdu-2544 最短路 弗洛伊德算法
- hdu 2544 最短路(优先队列 迪杰斯特拉Dijkstr)
- 最短路 HDU - 2544 (迪杰斯特拉)
- 【图论--Dijkstra】HDU 2544 最短路
- hdu 2544 最短路
- hdu 2544 最短路-spfa
- HDU 2544 最短路 (最短路,spfa)
- hdu 2544 最短路
- HDU 2544 最短路 floyd djkstra(邻接表,邻接矩阵) spfa bellman-ford 模板题
- hdu2544——最短路
- HDU 2544 最短路(Dijkstra算法)
- HDU 2544 最短路(最短路径)
- 【Dijkstra】-HDU-2544-最短路