本文共 1658 字,大约阅读时间需要 5 分钟。
题目:
方法一:dijkstra算法,求两点之间最短路径。
/************************************************************************//* hdu 最短路 两点之间最短路径 题目大意:dijkstra求两点之间最短路径。*//************************************************************************/#include#include #include #include #define MAX 0xfffffffconst int N = 101;int map[N][N];int vis[N];int dj[N];int num,m,n;void build_map(){ int a,b,c; for (int i = 1; i <= n; i++) for (int j = i; j <= n; j++) map[i][j] = map[j][i] = (i==j)?0:MAX; for (int i = 0; i < m; i++) { scanf("%d%d%d",&a,&b,&c); map[a][b] = map[b][a] = c; }}int DJ(){ int t = n; int sum = 0; int min,k; for (int i = 1; i <= n; i++) dj[i] = MAX; int cur = 1; dj[cur] = 0; while(1) { min = MAX; vis[cur] = 1; for (int i = 1; i <= n; i++) { if(vis[i]==1)continue; if(dj[i]>map[i][cur]+dj[cur]) dj[i] = map[i][cur]+dj[cur]; if (dj[i]
方法二:floyd算法,求两点之间最短距离, distance[i][j] = min(distance[i][j], distance[i][k]+distance[k][j]);借助中间点。
/************************************************************************//* hdu 最短路 两点之间最短路径 题目大意:floyd算法,求得两点之间最短距离,(u,v) = min( (u,v),(v,w)+(w,v) );*//************************************************************************/#include#include #include #include #define MIN(a,b) a
本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3253761.html ,如需转载请自行联系原作者