最短路径算法——邻接距阵
2012-11-30 14:13
393 查看
#define INF 99999 typedef struct Graphic{ int size; int **matrix; }; /*************** 最短路径 ***************/ //start指起点, //dist[i]记录源点到i点的最短路径 //prev[i]记录在特殊路径当中i点的前一个点 //Graphic *g就是无向图的结构体(邻接矩阵) void Dijkstra(int start,int dist[],int prev[], Graphic *g){ int i,j, min; int size = g->size; int **cost = g->matrix; bool *visited = new bool[size]; for (i=0;i<size;++i){ dist[i] = INF; visited[i] = false; prev[i] = dist[i]==INF ? -1 : start; } //初始时从源点出发 dist[start] = 0; visited[start] = true; for (i=0; i<size-1; ++i){ min = INF; int u = start; for (j=0;j<size;++j){ if ((!visited[j])&&(dist[j]<min)){ u = j; min = dist[j]; } } visited[u] = true; for (j=0; j<size; ++j){ if ((!visited[j])&&cost[u][j]<INF){ //distance为从源点到该点的最短路径 int distance = dist[u] + cost[u][j]; if (distance<dist[j]){ dist[j] = distance; prev[j] = u; } } } } //释放空间 delete visited; }
相关文章推荐
- 最短路径A*算法原理及java代码实现(看不懂是我的失败)
- 最小花费问题 (最短路径算法)
- 几种最短路径算法的比较
- dijkstra算法求单源最短路径
- 算法——最短路径之Dijkstra
- 网格最短路径算法(Dijkstra & Fast Marching)(转)
- 弗洛伊德算法-----最短路径算法(一)
- dijsk最短路径算法(matlab)
- 最短路径算法复杂度总结
- HDU:1596 find the safest road(floyd最短路径算法+打表)
- A* 算法搜索最短路径
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
- 【141029】VC游戏编写中的求解最短路径算法源码
- 最短路径的一些算法
- A* 算法求解最短路径
- 几个最短路径算法比较
- 最短路径算法—Floyd(弗洛伊德)算法分析与实现(Python)
- 初级->图算法->最短路径 poj 3259 Wormholes
- 图中最短路径的算法--dijiska算法C语言实现
- 【算法导论】每对顶点之间的最短路径算法