Dijkstra算法 最短路径
来源:互联网 发布:搜索图片的软件 编辑:程序博客网 时间:2024/05/20 02:56
http://acm.hdu.edu.cn/showproblem.php?pid=1874
HDU 1874
#include<iostream>#include<cstring>#include<cmath>using namespace std;#define INF 0x3f3f3f3fint Min(int a,int b){ return a>b?b:a;}int main(){ int w[201][201],v[201],d[201]; int n,m; while(cin>>n>>m) { memset(w,INF,sizeof(w)); memset(d,0,sizeof(d)); int x,y,z; for(int i=0;i<m;i++) { cin>>x>>y>>z; if(z<w[x][y]) w[x][y]=w[y][x] =z; //由x到y和y到x的路径都改写 } int star,End; cin>>star>>End; memset(v,0,sizeof(v)); for(int i=0;i<n;i++) d[i]=(i==star? 0 : w[star][i]); //起点到起点的距离为0,到其他的点的距离分为:1.有直接通路为直接通路长2.无直接通路为无限长 v[star]=1; //标记起点,防止重复走 for(int i=0;i<n;i++) //每次循环找到一个点(优先选择到达当前点短的路径),然后找到起点到这个点的最端路径 { int m=INF; for(int j=0;j<n;j++) //优先当前点的通路中最短的一条 if(!v[j]&&d[j]<=m) m=d[x=j]; v[x]=1; //标记 for( int j=0;j<n;j++) //被标记点的能直接到达的通过被标记点和不通过被标记点的路径选择(优先选择短的) if(!v[j]) d[j]=Min(d[j],d[x]+w[x][j]); } //for(int i=0;i<n;i++) // cout <<d[i]<<endl; if(d[End]!=INF) cout<<d[End]<<endl; else cout<<-1<<endl; }}
“`
阅读全文
0 0
- DIJKSTRA最短路径算法
- 最短路径算法-dijkstra
- dijkstra最短路径算法
- 最短路径 Dijkstra算法
- 最短路径(Dijkstra算法)
- 最短路径Dijkstra算法
- 最短路径 Dijkstra算法
- Dijkstra最短路径算法
- 最短路径dijkstra算法
- 最短路径 dijkstra算法
- 最短路径Dijkstra 算法
- 最短路径 (Dijkstra算法)
- Dijkstra最短路径算法
- 最短路径(Dijkstra算法)
- 最短路径--Dijkstra算法
- Dijkstra最短路径算法
- Dijkstra最短路径算法
- Dijkstra最短路径算法
- java实战项目视频学习
- Java问答题(1)
- 第十七章经典抽象数据结构二:树(数组实现)
- 【Scikit-Learn 中文文档】大规模计算的策略: 更大量的数据
- ROS 控制机器人走正方形
- Dijkstra算法 最短路径
- python学习—Day38—memcache安装以及群集操作
- Python中的字符串反转
- 初见C语言
- 通信网络编程第四次作业
- Python--第一个爬虫
- smb共享服务
- 【Scikit-Learn 中文文档】预测延迟 / 预测吞吐量 / 技巧和窍门
- gpio在输入模式下一直为低电平解决方法