HDU 2544
2013-08-23 09:34
741 查看
题目描述:
HDU 2544分析:
Dijkstra算法的典型应用。源码:
#include <stdio.h> #include <limits.h> //三个数组分别记录路线,最短距离,以及标志是否已经被扩展 int map[101][101], dist[101], s[101]; void dijkstra(int n, int x); int main() { int n, m, a, b, c; int i, j; while (scanf("%d%d", &n, &m) != EOF) { if (n==0 && m==0) break; //初始化数组map for (i = 1; i <= n; i ++) { for (j = 1; j <= n; j ++) { map[i][j] = INT_MAX; } } //读取所有的边 for (i = 1; i <= m; i ++) { scanf("%d%d%d", &a, &b, &c); map[a][b] = map[b][a] = c; } dijkstra(n, 1); printf("%d\n", dist ); } return 0; } void dijkstra(int n, int x) { //x表示源点,n表示终点 int mindis, u; int i, j; for (i = 1; i <= n; i ++) { dist[i] = map[x][i]; s[i] = 0; } //扩展源点 s[x] = 1; for (i = 1; i < n; i ++) { mindis = INT_MAX; u = -1; //找出距离最小的点,然后扩展它 for (j = 1; j <= n; j ++) { if (!s[j] && dist[j] < mindis) { u = j; mindis = dist[j]; } } s[u] = 1; for (j = 1; j <= n; j ++) { if (s[j] == 0) { if (dist[u]+map[u][j] < dist[j] && map[u][j] < INT_MAX) { dist[j] = dist[u] + map[u][j]; } } } } }
相关文章推荐
- hdu2544——最短路
- HDU 2544 典型的Dijkstra算法的应用
- hdu 2544 最短路(图论:迪杰斯特拉||弗洛伊德算法)
- hdu 2544 买t-shirt最短路 dijkstra算法
- hdu 2544
- hdu 2544 最短路 (dijkstra,floyd)
- HDU - 2544 最短路
- hdu 2544 【总结】 Dijkstra,Bellman-Ford ,SPFA 最短路求法及对应优化
- HDU-2544-最短路-迪杰斯特拉
- hdu 2544 最短路(floyd)
- HDU 2544 最短路(我的dijkstra算法模板、SPAFA算法模板)
- hdu 2544 最短路
- HDU 2544 最短路(Dijkstra算法)
- 【HDU 1874 2544 2066 2112】 Dijkstra单源最短路径专题 —— 优先队列+邻接表/邻接矩阵
- HDU 2544 最短路 最短路入门
- hdu 2544
- HDU 2544 - 最短路(单源最短路)
- hdu 2544 最短路
- hdu 2544
- hdu 2544 最短路 (邻接表)