最短路之dijkstra
来源:互联网 发布:木工展开面积快速算法 编辑:程序博客网 时间:2024/06/13 06:53
dijkstra是处理最短路的最基础的一个方法,只能做无负值边并且是单源最短路。大致是每次找到未进入集合的最短路点,然后用这个点更新路径,并将此点加入集合。
hdu2544
#include<iostream>#include<string.h>using namespace std;const int MAXN=120;const int MAX_INT=0x3fffffff;int n,m,i,j,u,v,l,h;int p[MAXN];//标记是否进入最短路的集合中int dist[MAXN];//源点到当前点的最短距离int a[MAXN][MAXN];//矩阵记录两点之间的路径void dijkstra(){ memset(p,0,sizeof(p)); u=1; for (i=1;i<=n;i++) dist[i]=a[u][i]; dist[u]=0; p[u]=1; for (i=1;i<=n;i++) { h=0; for (j=1;j<=n;j++) if (dist[j]<dist[h]&&!p[j]) h=j;//找到未加入集合的最短路点 p[h]=1;//加入集合 for (j=1;j<=n;j++)//更新路径 if (dist[h]+a[h][j]<dist[j]) dist[j]=dist[h]+a[h][j]; }}int main(){ while(cin>>n>>m&&(n!=0||m!=0)) { for (i=0;i<=n;i++) dist[i]=MAX_INT; for (i=1;i<=n;i++) for (j=1;j<=n;j++) a[i][j]=MAX_INT;//初始化 for (i=1;i<=m;i++) { cin>>u>>v>>l; if (l<a[u][v]) { a[u][v]=a[v][u]=l; } } dijkstra(); cout<<dist[n]<<endl; }}
0 0
- 最短路之dijkstra
- 最短路之Dijkstra
- 最短路之dijkstra
- 最短路之Dijkstra
- 最短路之dijkstra
- 最短路之dijkstra
- 最短路之dijkstra
- 最短路算法之Dijkstra
- 最短路之dijkstra 算法
- 最短路之Dijkstra算法
- 最短路算法之dijkstra
- 最短路之Dijkstra---HDU1874
- 最短路之Dijkstra算法
- hdu 2544 最短路(最短路算法之Dijkstra)
- 最短路算法之 Dijkstra算法
- 图论浅析--最短路之Dijkstra
- 最短路之 dijkstra & floyed &SPFA
- 最短路算法之Dijkstra算法
- 如何判断App是否在最前面
- 两种方法交换变量的值
- 利用Metasploit测试一个古老的IE8漏洞(编号CVE-2012-1875)
- 【项目1-正差值】
- 神奈川中文离线地图App上线
- 最短路之dijkstra
- HDU 1215 七夕节 因子求和
- 多校第一场 1009 hdu 5296 Annoying problem(dfs序+在线倍增lca)
- [LeetCode]Word Break
- 【机房收费系统】第一遍机房之系统的登陆和配置
- RMAN 备份详解
- git 分支
- linux安装redis汇总
- scanf函数的基本使用