最短路径算法Dijistra算法—单源最短
2015-11-08 17:56
381 查看
#include <iostream> #include <string> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; const int maxint=99999; const int maxn=1000; int distance_[maxn];//源点到图中其他点的最短路径距离 int g[maxn][maxn];//图的矩阵表示 int n;//顶点数量 bool ver[maxn];//已经找到了最短路径的点的标号 //Dijkstra的做法就是初始化后,进行n次循环,即相当于将Q集合中的点遍历出来,具体看算法导论里的讲解,每次循环找出源点到这个点的最短路径中最小的且尚未确定最短路径的点,找到之后对所有与它有边并且同样没找到最短路径的点进行松弛操作 void Dijkstra() { //初始化将所有点到源点的距离设置为无穷大 for(int i=1;i<=n;i++) { distance_[i]=maxint; } distance_[1]=0;//这里假定源点是标号为1的点,源点到自身距离为0 //所有点均未找到最短路径 memset(ver,0,sizeof(ver)); //开始循环 for(int i=1;i<=n;i++) { int mark=0,mindistance=maxint; for(int j=1;j<=n;j++) { if(ver[j]==false&&distance_[j]<mindistance) { mindistance=distance_[j]; mark=j; } } a[mark]=true; for(int j=1;j<=n;j++) { if(ver[j]==false&&distance_[j]>distance_[mark]+g[mark][j]) distance_[j]=distance_[mark]+g[mark][j]; } } }
相关文章推荐
- lightoj1354 - IP Checking
- Spring整合加载Hibernate文件
- 汇编语言-端口和外中断
- Struts2 URL参数 s:if 判断运用
- 第九周学习总结
- 汇编语言-端口和外中断
- iOS开发-消息推送
- PowerShell Function之获取service信息
- python爬虫工具及最佳实践
- 信息安全系统设计基础第九周学习总结
- c语言 转义字符
- Oracle 数据库11.2版本中,企业版、标准版、标准版ONE 之间的不同
- lightoj1297 - Largest Box
- js的全局变量与局部变量
- leetcode:Add Two Numbers---------java源码
- c语言 字符串
- 王爽 汇编 检测点17.1
- Rails中的validate校验
- c 语言 指针
- delegate / target, action / block