Dijkstra 单源最短路
来源:互联网 发布:python毕业设计项目 编辑:程序博客网 时间:2024/05/18 02:24
#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <string.h>#include <map>#include <set>#include <queue>#include <deque>#include <list>#include <bitset>#include <stack>#include <stdlib.h>#define lowbit(x) (x&-x)#define e exp(1.0)#define eps 1e-8//ios::sync_with_stdio(false);// auto start = clock();// cout << (clock()-start)/(double)CLOCKS_PER_SEC<<endl;typedef long long ll;typedef long long LL;using namespace std;typedef unsigned long long ull;//Dijkstra 单源最短路 刘哲/* * 使用优先队列优化Dijkstra算法 复杂度O(ElogE) 注意对vector<Edge>E[MAXN]进行初始化后加边 */const int INF=0x3f3f3f3f;const int MAXN=1000010;struct qnode{ int v; int c; qnode(int _v=0,int _c=0):v(_v),c(_c){} bool operator <(const qnode &r)const { return c>r.c; }};struct Edge{ int v,cost; Edge(int _v=0,int _cost=0):v(_v),cost(_cost){}};vector<Edge>E[MAXN];bool vis[MAXN];int dist[MAXN];void Dijkstra(int n,int start)//点的编号从1开始{ memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++)dist[i]=INF; priority_queue<qnode>que; while(!que.empty())que.pop(); dist[start]=0; que.push(qnode(start,0)); qnode tmp; while(!que.empty()) { tmp=que.top(); que.pop(); int u=tmp.v; if(vis[u])continue; vis[u]=true; for(int i=0;i<E[u].size();i++) { int v=E[tmp.v][i].v; int cost=E[u][i].cost; if(!vis[v]&&dist[v]>dist[u]+cost) { dist[v]=dist[u]+cost; que.push(qnode(v,dist[v])); } } }}void addedge(int u,int v,int w){ E[u].push_back(Edge(v,w));}int main()//刘哲{ int n,m;//n条边,m个点 cin>>n>>m; for(int i=0;i<m;i++) { int a,b,c; cin>>a>>b>>c; addedge(a,b,c); } Dijkstra(n,1); cout<<"1到各点的距离为:"; for(int i=2;i<=n;i++)cout<<dist[i]<<' '; cout<<endl;}/*Input:5 71 2 101 4 301 5 1002 3 503 5 104 3 204 5 60Output:1到各点的距离为:10 50 30 60*/
阅读全文
0 0
- 单源最短路dijkstra算法
- 单源最短路(Dijkstra)-poj1502
- dijkstra单源最短路
- 单源最短路Dijkstra
- Dijkstra-算法-----单源最短路
- Dijkstra 算法 -单源最短路
- hdu1874 单源最短路Dijkstra
- 单源最短路->Dijkstra算法
- Dijkstra算法-单源最短路
- Dijkstra 单源最短路
- 单源最短路(dijkstra)
- 单源最短路—dijkstra算法
- 单源最短路 dijkstra + heap 实现
- Dijkstra 单源最短路 模板 uva11374
- 单源最短路Dijkstra算法源码
- 单源最短路 Dijkstra 算法 C++高效实现
- 单源最短路 Dijkstra O(mlogn) (类实现)
- Sicily 1031 Campus(单源最短路Dijkstra)
- 面试题整理
- mysql与oracle分页查询
- mysql Model
- Tablayout的frament方法
- Android 悬浮编辑框
- Dijkstra 单源最短路
- 烟台大学官网静态图
- 随笔:Java中main函数的参数args的使用
- Android OKHttp 使用笔记
- Ubuntu16.04 + matlab 2017a
- 线性表的基本运算
- 题目36:数的长度
- MYSQL学习笔记三:Explain
- vs2013写Qt的程序时,出现红线