单源最短路径 DIJ算法(无堆优化)
来源:互联网 发布:vb for mac 编辑:程序博客网 时间:2024/04/29 22:00
/* //*************************************************************************** MapMin.cpp By Mollnn.Fan Using Dijkstra*****************************************/ //***********************************#include <iostream>#include <fstream>#include <malloc.h>#include <conio.h>#include <cmath>#define MAXN 1000#define MAXI 2147483646using namespace std;int time;int dist[MAXN]; //标识起始点到当前点的距离 int prev[MAXN]; //标识当前点的路径上前一个点的标号 int a[MAXN][MAXN]; //邻接矩阵 ifstream fin;ofstream fout;int dij(int n,int v) //普通DIJ算法 {bool s[MAXN]; //定义每一个点是否被使用 int i,j;for(i=0;i<n;i++) //初始化 {dist[i]=a[v][i];s[i]=0;if(dist[i]==MAXI)prev[i]=0;elseprev[i]=v;}dist[v]=0;s[v]=1;for(i=1;i<n;++i) //从第2个点开始找起 {int t=MAXI;int p=v;for(j=0;j<n;++j) //找出距离始点最近的点 {if((!s[j])&&(dist[j]<t)){t=dist[j];p=j;}}//已经找出最近的点p,为中间点 s[p]=1;for(j=0;j<n;++j) //从中间点更新其余邻接点的最小权值 {if((!s[j])&&(a[p][j]<MAXI)){int ntmp=dist[p]+a[p][j];if(ntmp<dist[j]){dist[j]=ntmp;prev[j]=p;}}}}}void searchpath(int v, int u) //路径输出函数 { int que[MAXN]; //将要输出的path点队列 int tot = 0; //循环变量 que[tot] = u+1; //队列起始位置设为终点 ++tot; int tmp = prev[u]; //定义临时变量tmp,设置值为终点的前一个点 while(tmp != v) //当临时变量值不等于起始点的时候继续循环 { que[tot] = tmp+1; //输出当前点到队列 tot++; //循环变量递增 tmp = prev[tmp]; //取出当前点的前一个点 } que[tot] = v+1; //输出起始点到队列,结束路径 for(int i=tot; i>=0; --i) //逆序输出队列 if(i != 0) fout << que[i] << " "; else fout << que[i]; return;}int main(){time=0;fin.open("mapmin.in");fout.open("mapmin.out");int n,m;int end;fin>>n>>m>>end;--end;int i,j;int pa,pb,t;for(i=0;i<MAXN;++i){for(j=0;j<MAXN;++j){a[i][j]=MAXI;}dist[i]=MAXI;}for(i=0;i<m;i++){fin>>pa>>pb>>t;--pa;--pb;if(t<a[pa][pb]){a[pa][pb]=t;a[pb][pa]=t;}}dij(n,0); fout<<dist[end]<<endl;searchpath(0,end);return 0;}
0 0
- 单源最短路径 DIJ算法(无堆优化)
- 单源最短路径(dij+堆优化)
- hdu1245+dij,堆优化
- Dij+堆优化
- 单源最短路径(堆优化的Dijkstra算法)
- 堆优化 Dijstra单源最短路径算法 2(邻接表)
- haut 1262: 魔法宝石(dij+堆优化)@
- HDU2544-最短路(dij堆优化与spfa)
- Dij.......最短路径算法
- hdu 5040 Instrusive(堆优化+dij)
- dij算法(迪杰斯特拉)
- Dijstra 单源最短路径算法 堆优化-1(二维数组存储数据)
- 【DayDayUp】【算法_图_最短路_之二_SPFA最劣、Dij堆优化&Johnson(结点对最短路)】(待续)
- HDU3790 最短路径问题+dij算法
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路);Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路);Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路)Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- codeforces 716D. Complete The Graph 堆优化dij+暴力
- 基于Zynq的数据采集系统设计与调试(二) —— AD接口
- 131. Palindrome Partitioning
- [模版] unique函数,vector合并,数组、vector快速输出(cout)
- {小结}2016.07.17【初中部 NOIP提高组 】模拟赛B?
- java 逻辑运算符
- 单源最短路径 DIJ算法(无堆优化)
- MySQL里host为%是什么意思
- linux系统优化
- 杭电hdu1021 Fibonacci Again 找规律
- 怎么判断focusWidget()返回的是哪类型控件
- jquery基本选择器的用法解析
- 命名空间
- 数组实现根据二叉树的先序遍历和中序遍历构造二叉树
- 父子进程的各种区别与联系