最短单源路径之dijkstra算法
来源:互联网 发布:网络键盘侠 编辑:程序博客网 时间:2024/05/16 17:07
#include<cstdio>#include<cstring>#include<iostream>#define MAX 999using namespace std;int dis[MAX];int n,m;int d[MAX][MAX];int Min,flag;bool vis[MAX];int dijkstra(){ for(int i=1; i<=n; ++i) { if(d[m][n]!=MAX) dis[i]=d[m][i]; else dis[i]=MAX; dis[m]=0; } for(int i=1; i<=n; ++i) { //查找最近点 Min=MAX+1; for(int j=1; j<=n; ++j) if(j!=m && dis[j]<Min && (!vis[j])) Min=dis[j],flag=j; for(int j=1; j<=n; ++j) if(j!=m) { if(dis[j]>dis[flag]+d[flag][j]) dis[j]=dis[flag]+d[flag][j]; } vis[flag]=true; }}int main(){ while(cin>>n) { for(int i=1; i<n; ++i) for(int j=i+1; j<=n; ++j) { cout<<"d["<<i<<"]["<<j<<"]"<<endl; cin>>d[i][j]; d[j][i]=d[i][j]; if(d[i][j] == 0 || d[i][j] > MAX) d[i][j]=d[j][i]=MAX; } for(int i=1; i<=n; ++i) d[i][i]=0; cout<<"m"<<endl; cin>>m; if(m<1) m=1; if(m>n) m=n; dijkstra(); for(int i=1; i<=n; ++i) cout<<dis[i]<<" "; cout<<endl; }}
dijkstra算法是求最短单源路径的一种算法
阅读全文
0 0
- 最短单源路径之dijkstra算法
- 求最短路径之Dijkstra算法
- 单源最短路径之Dijkstra算法
- 单源最短路径之Dijkstra算法
- 单源最短路径之dijkstra算法
- 【算法导论】单源最短路径之Dijkstra算法
- 浅谈路径规划算法之Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra+Floyd算法
- 求最短路径之——Dijkstra算法
- 算法与数据结构-单源最短路径之Dijkstra
- 三、最短路径之Dijkstra算法
- 最短路径 之 Dijkstra算法
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- 图论之Dijkstra算法求最短路径
- 最短路径之Dijkstra算法
- 最短路径之Dijkstra算法
- UVA 1586
- Java源码阅读-HashMap
- HDU1894 String Compare 字符串比较
- Shell学习笔记
- 高频使用命令
- 最短单源路径之dijkstra算法
- CSU1569 Wet Tiles
- 互斥锁的使用
- Oracle查询语句
- SAN、NAS、SCSI、iSCSI等存储基础知识
- 503. Next Greater Element II
- 《程序员修炼之道:从小工到专家》提示与检查清单汇总
- 碰到了ORA-06576错误
- vim的安装及配置