最短路径 简单的代码
来源:互联网 发布:3d照相机软件 编辑:程序博客网 时间:2024/06/14 06:26
看了这些代码之后 总结了一下 其实就那三个for 循环 一:找与v有连接的点 。二:从这些连接的点找到最小,把他看成是下一次的v 。 三: 你要把有出现的那些边 更新掉。 详解在代码里写出了
<span style="font-size:18px;">#include#include#includeusing namespace std ;#define N 100#define M 100typedef struct node { int matrix[N][M] ; int n ; int e ;}Dgraph ;void DijistraPath(Dgraph g , int *dist , int *path , int V0){ int i , j ; //申请两个 int 类型的 指针 visit 用来记录 某些点是否已经被访问过 bool *visit = (bool *) malloc(sizeof(bool )* g.n) ; for(i = 0 ; i < g.n ; i++){ if(g.matrix[V0][i] > 0 && i != V0 ) { dist[i] = g.matrix[V0][i] ; path[i] = V0 ; //path记录最短路径上从v0到i的前一个顶点 } else { dist [i] = INT_MAX ; path[i] = -1 ; } visit[i] = false ; //这些i 都还没被访问过 先标记一下 path[V0] = V0 ; dist[V0] = 0 ; } visit[V0] = true ; //第一个循环是要把每个点 都进行 下面的操作 需要n 次 for(i = 1 ; i < g.n ; i++){ int u ; //用来记录 最小的那个点的 位置 int min = INT_MAX ; // 找到最小的那个点 for(j = 0 ; j < g.n ; j++ ){ if(visit[j] == false && dist[j] < min ) { min = dist[j] ; u = j ; } } visit[u] = true ; //下面我们要把 dist 更新一遍 因为可能V0 到某个点直接距离 比 从其他路线还要长 //所以把那个dist 改成 更短的 for(i = 0 ; i < g.n ; i++ ){ if(visit[i] == false && g.matrix[u][i] > 0 && min + g.matrix[u][i] < dist[i]) { dist[i] = min + g.matrix[u][i] ; path[i] = u ; } } } }int main(){ int i , j ; int n , e ; int V0 ; int s , t , w ; int x ; Dgraph g ; while(cin>>n>>e && e != 0) { // disti[] 用来放从 原点到第i个的最短距离 //path[i] 用来放 i被访问的前一个点 int *dist = (int *)malloc(sizeof(int)*n) ; int *path = (int *)malloc(sizeof(int)*n ) ; // 先把g.matrix(就是权值)初始化 for(i = 0 ; i < N ; i++){ for(j = 0 ; j < M ; j++){ g.matrix[i][j] = 0 ; } } g.n = n ; g.e = e ; //这里是输入 每条边的 权值 for(i = 0 ;i < e ;i++ ){ cin>>s>>t>>w ; g.matrix[s][t] = w ; } cin>>V0; //输入原点 DijistraPath( g , dist , path , V0) ; cin>>x; cout<<dist[x] ; } return 0 ;}如果没有看懂 看看这个链接 不再患得患失 的文章</span>
0 0
- 最短路径 简单的代码
- 最简单的最短路径算法
- 迷宫的最短路径 代码(C++)
- A - 最简单的最短路 -最短路径
- 最短路径之Dijkstra算法(摘自算法基础)【一些简单的解释,没有代码】
- JAVA最短路径代码
- 迷宫的最短路径(BFS的简单应用)
- 最短路径(校园导游)的简单算法
- 编程算法 - 迷宫的最短路径 代码(C++)
- Djkstra最短路径算法的c++代码实现
- 最短路径的实现
- 迷宫的最短路径
- 最短路径的实现
- 迷宫的最短路径
- 图的最短路径
- 再谈图的最短路径
- 迷宫的最短路径
- 图的最短路径
- java读取txt文本中如含有中文,可能会出现乱码,解决方案
- js社交相关代码
- VC中拦截ESC消息
- linq.js - jQuery Plugin
- 1的个数
- 最短路径 简单的代码
- libusb+vc6.0环境下demo的编译环境搭建
- Ural FU Championship 2012
- 内核相关
- __doPostBack简单的使用方法
- android shape的使用
- 黑马程序员_线程阻塞问题
- ios证书申请
- 并查集的 路径压缩(递归和非递归)