第17周 啊哈算法 图的遍历算法-Dijkstra单源最短路径算法
来源:互联网 发布:拼模特卡软件 编辑:程序博客网 时间:2024/05/01 05:05
问题及代码:
/*Dijkstra算法,即单源最短路径算法:通过边实现松弛*/ #include<stdio.h>int main() { int i,j,n,m,u,v,t1,t2,t3,min; int dis[10]; int e[10][10]; int book[10]; int inf=99999999; scanf("%d %d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i==j) e[i][j]=0; else e[i][j]=inf; for(i=1;i<=m;i++) { scanf("%d %d %d",&t1,&t2,&t3); e[t1][t2]=t3; } //初始化dis数组,1号到各个顶点的初始路程 for(i=1;i<=n;i++) dis[i]=e[1][i]; for(i=1;i<=n;i++) book[i]=0; book[1]=1; //Dijkstra核心算法 for(i=1;i<=n-1;i++) { //找到离1号顶点最近的顶点 min=inf; for(j=1;j<=n;j++) { if(book[j]==0 && dis[j]<min) { min=dis[j]; u=j; } } book[u]=1; //这一步漏了,一定要记住走过的顶点一定要标记 for(v=1;v<=n;v++) { if(e[u][v]<inf) //自己做的时候,还少了以这一步 是否应该改成if(book[v]==0 && e[u][v]<inf) { if(dis[v]>dis[u]+e[u][v]) dis[v]=dis[u]+e[u][v]; } } } for(i=1;i<=n;i++) printf("%5d",dis[i]); getchar();getchar(); return 0; }
0 0
- 第17周 啊哈算法 图的遍历算法-Dijkstra单源最短路径算法
- 第17周 啊哈算法 图的遍历算法-Floyd多源最短路径算法
- 第17周 啊哈算法 图的遍历算法(深度优先)
- 第17周 啊哈算法 图的遍历算法(不牵涉距离)
- 第17周 啊哈算法 图的遍历算法-最少转机
- 【C++】【啊哈!算法】Dijkstra算法
- 《啊哈算法》第五章 图的遍历
- 单源最短路径的Dijkstra 算法
- 第15周 啊哈算法 排序算法
- Dijkstra算法求图的单源最短路径
- 图的单源最短路径:Dijkstra算法实现
- 图的单源最短路径--Dijkstra算法
- 图的单源最短路径Dijkstra算法
- 单源最短路径算法(Dijkstra算法)
- 单源最短路径 dijkstra算法
- 单源最短路径Dijkstra算法
- Dijkstra 单源最短路径算法
- 单源最短路径 :Dijkstra 算法
- 深度剖析:如何实现一个 Virtual DOM 算法
- 杭电1222
- KdPrint使用方法
- 小记——inotify文件监控
- Android 让WebView完美支持https双向认证(SSL)
- 第17周 啊哈算法 图的遍历算法-Dijkstra单源最短路径算法
- 【机器学习】局部加权线性回归
- python 映射类型(字典)内建方法
- java学习之checkbox和choice
- Cow Marathon(两次dfs求树的直径)
- Linux下编译GDAL
- Temp segment 使用的一些总结
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- java多线程Thread的实现方法、中断机制、生命周期、守护进程等