HDOJ 1874 畅通工程续 【dijkstra】
2014-08-13 10:11
211 查看
题意:。。。
策略:最简单的求最短路径.
代码:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
策略:最简单的求最短路径.
代码:
#include<stdio.h> #include<string.h> #define MAXN 1005 #define INF 0x3f3f3f3f int di[MAXN], vis[MAXN], n, m; int map[MAXN][MAXN]; void dijkstra(int v) { int i, j; memset(vis, 0, sizeof(vis)); di[v] = 0; vis[v] = 1; for(i = 0; i < n; i ++){ if(!vis[i]){ di[i] = map[v][i]; } } for(i = 1; i < n; i ++){ int min = INF; int min_pos = 0; for(j =0; j < n; j ++ ){ if(!vis[j]&&min > di[j]){ min_pos = j; min = di[j]; } } vis[min_pos] = 1; for(j = 0; j < n; j ++){ if(!vis[j]&&di[j] > di[min_pos]+map[min_pos][j]){ di[j] = di[min_pos]+map[min_pos][j]; } } } } int main() { int i, j, a, b, c, st, en; while(scanf("%d%d", &n, &m) == 2){ memset(map, 0, sizeof(map)); for(i = 0; i < n; i ++){ for(j = 0; j < n; j ++){ map[i][j] = i == j?0:INF; } } for(i = 0; i < m; i ++){ scanf("%d%d%d", &a, &b, &c); if(map[a][b]>c||!map[a][b]){ map[a][b] = map[b][a] = c; } } scanf("%d%d", &st, &en); dijkstra(en); if(di[st] != INF) printf("%d\n", di[st]); else printf("-1\n"); } return 0; }
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
相关文章推荐
- HDOJ——1874 畅通工程续(Dijkstra)
- HDOJ 1874 畅通工程续 (最短路 Dijkstra && SPFA && Floyd)
- HDOJ1874 畅通工程续 (Dijkstra)
- hdoj 1874 畅通工程续 【dijkstra】
- HDOJ 1874 畅通工程续(最短路--dijkstra)
- hdoj-1874 畅通工程续【最短路径--dijkstra&&floyd&&spfa】
- HDOJ 1874 畅通工程续(Dijkstra+Floyed+SPFA)
- HDOJ/HDU---1874 畅通工程续 最短路(dijkstra)
- hdoj 1874 畅通工程续【dijkstra、floyd、spfa】
- HDU1874 畅通工程续 【链式前向星】+【Dijkstra】
- hdu - 1874 - 畅通工程续(Dijkstra / SPFA)
- HDOJ 1874 畅通工程续(最短路)
- HDOJ 题目1874 畅通工程续(简单最短路径)
- HDOJ1874 畅通工程续(floyd)
- HDOJ 畅通工程续 1874【简单最短路】
- hdu1874 畅通工程续(Dijkstra/Floyd/Bellman-Ford/SPFA)
- HDU 1874-畅通工程续(floyd&&Dijkstra)
- hdoj 1874 畅通工程续【三种方法】
- HDU 1874 畅通工程续——dijkstra
- HDUOJ1874 畅通工程续 和 NYOJ 115 城市平乱【Dijkstra 算法】