[模板] Dijkstra单源最短路径
来源:互联网 发布:thumbdata怎么删除知乎 编辑:程序博客网 时间:2024/05/17 23:09
十分基础的Dijkstra算法
详见代码
#define maxn 100000#define maxm 100000using namespace std;const int INF=999999999;struct HeapNode{int d,u;bool operator < (const HeapNode& rhs) const{return d>rhs.d;}};struct Edge{int from,to,dist;Edge(int u,int v,int d):from(u),to(v),dist(d) {}};struct Dijkstra{int n,m;vector<Edge> edges;vector<int> G[maxn];bool done[maxn];//是否用过(永久标号) int d[maxn];//s到各个点的距离 (dist) int p[maxn];//最短路上的一条边 (path) void init(int n){this->n=n;for(int i=0;i<n;i++){G[i].clear(); }edges.clear();} void AddEdge(int from,int to,int dist){edges.push_back(Edge(from,to,dist));m=edges.size();G[from].push_back(m-1);}void dijkstra(int s){priority_queue<HeapNode> Q;for(int i=0;i<n;i++){d[i]=INF;}d[s]=0;memset(done,0,sizeof(done));Q.push((HeapNode){0,s});while(!Q.empty()){HeapNode x=Q.top();Q.pop();int u=x.u;if(done[n]){continue;}done[u]=true;for(int i=0;i<G[u].size();i++){Edge& e=edges[G[u][i]];if(d[e.to]>d[u]+e.dist){d[e.to]=d[u]+e.dist;p[e.to]=G[u][i];Q.push((HeapNode){d[e.to],e.to});}}}}};
阅读全文
1 0
- [模板] Dijkstra单源最短路径
- 单源最短路径算法模板(Dijkstra+BellmanFrod)
- 单源最短路径Dijkstra、BellmanFord、SPFA【模板】
- [洛谷]P3371 单源最短路径模板 Dijkstra
- 【模板】 Dijkstra单源最短路径 (模板题:XJOI P1061)
- P3371 【模板】单源最短路径 SPFA优化 dijkstra堆优化
- 洛谷 P3371 【模板】单源最短路径(Dijkstra + 堆优化)
- 图论最短路径 Dijkstra算法和模板
- Dijkstra最短路径模板2
- poj 2387 最短路径 **dijkstra模板
- 最短路径Dijkstra算法模板
- ACM模板 dijkstra,最短路径
- 图论最短路径 Dijkstra算法和模板
- 最短路径之 Dijkstra模板
- dijkstra 最短路径算法模板
- 单源最短路径 dijkstra算法
- 单源最短路径Dijkstra算法
- Dijkstra 单源最短路径算法
- 灵活&&高效的符号表--二叉查找树
- dropout和L1,L2正则化的理解笔记
- Hive 日期函数
- Longest Continuous Increasing Subsequence
- css知识点——文本溢出的处理方法
- [模板] Dijkstra单源最短路径
- QML中的Menu
- PYTHON机器学习实战——K均值聚类
- 闭锁机制
- python中的break语句
- Cesium学习(二)shp格式转为json格式并叠加到底图上使用
- 备忘录模式
- Spring Task
- bzoj1072 [SCOI2007]排列perm(状压dp)