单源最短路径问题 Dijkstra 贪心法
来源:互联网 发布:帝国cms养生采集规则 编辑:程序博客网 时间:2024/05/21 08:43
一维数组d[i]中存放从原点s到结点i的当前最短路径的长度;
一维整型数组path[i]存放从原点到结点i的当前最短路径上,结点i的前一个结点。
程序如下:
#include<iostream>#include<cmath>#include<fstream>#include<cstdlib>#include<cstdio>#include<cstring>using namespace std;const int INFTY=2147483647-1000000;const int N=100;int a[N][N],n; //a是有向图的邻接矩阵int *d;int *path;int Choose(int *d,bool *s){ int i,minpos,min; min=INFTY;minpos=-1; for(i=0;i<n;i++) { if(d[i]<min && !s[i]){ min=d[i]; minpos=i; } } return minpos;}void Dijkstra(int s,int* &d,int* &path){ int k,i,j; if(s<0||s>n-1) cout<<"OutOfBounds!"; bool *inS=new bool[n+1]; d=new int[n+1]; path=new int[n+1]; for(i=0;i<n;i++){ //初始化 inS[i]=false; d[i]=a[s][i]; if(i!=s && d[i]<INFTY) path[i]=s; else path[i]=-1; } inS[s]=true;d[s]=0; //将原点加入S中 for(i=1;i<n;i++) //求n-1条最短路径 { k=Choose(d,inS); //选出下一条最短路径的结点k inS[k]=true; //将k加入S中 for(j=0;j<n;j++) //更新d和path的值 if(!inS[j] && d[k]+a[k][j]<d[j]) { d[j]=d[k]+a[k][j]; path[j]=k; } }}int main(){ //freopen("data.in","r",stdin); cout<<"输入结点个数: "; cin>>n; int s,t,w; cout<<"输入结点关系及权值(以Ctrl+Z结束): "<<endl; for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[i][j]=INFTY; while(cin>>s>>t>>w){ a[s][t]=w; } cout<<endl; Dijkstra(0,d,path); for(int i=1;i<n;i++) cout<<"0到"<<i<<"最短路径: "<<d[i]<<" "<<path[i]<<endl; return 0;}
0 0
- 单源最短路径问题 Dijkstra 贪心法
- 贪心算法------单源最短路径问题(Dijkstra)
- 单源最短路径---贪心法实现(Dijkstra算法)
- 单源最短路径---贪心法实现(Dijkstra算法)
- 贪心算法--Dijkstra单源最短路径
- 贪心算法 - 单源最短路径 Dijkstra
- 贪心算法 Dijkstra 单源最短路径
- 贪心算法-Dijkstra单源最短路径
- 贪心算法 - 单源最短路径 Dijkstra
- 算法java实现--贪心算法--单源最短路径问题--Dijkstra算法
- 单源最短路径问题--Dijkstra
- 贪心算法——单源最短路径 dijkstra
- Dijkstra算法|单源最短路径|贪心算法
- 贪心算法——单源最短路径 dijkstra
- 贪心算法之单源最短路径Dijkstra
- 单源最短路径(Dijkstra算法)贪心策略
- Dijkstra算法是解单源最短路径问题的一个贪心算法
- 单源最短路径问题[Dijkstra实现]
- shadowsocks 服务端安装
- ubuntu工作环境配置
- jquery $(document).ready() 与window.onload的区别(转)
- Photoshop又来神器!人脸动态捕捉来了!
- UI_LTView自定义视图
- 单源最短路径问题 Dijkstra 贪心法
- JAVA设计模式学习20——责任链模式
- IOS 与ANDROID框架及应用开发模式对比一
- wince5.0/6.0 注册表修改后无法保存
- 数据库第五次作业 王小芬 2013212954 理学院
- Kth Largest Element in an Array
- 超牛逼的脑图(思维导图、心电图)
- 数据库锁
- 数据库学习笔记