模板 图论 Dijkstra+堆优化
2015-01-23 10:37
459 查看
#include <iostream> #include <cstring> #include <vector> #include <queue> #define INF 0xfffffff #define MAXN 1000100 using namespace std; struct node{ int v; int c; node(int _v=0,int _c=0):v(_v),c(_c){} bool operator < (const node &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) { memset(vis,0,sizeof(vis)); for(int i=0;i<=n;i++) dist[i]=INF; priority_queue <node> que; while(!que.empty()) que.pop(); dist[start]=0; que.push(node(start,0)); node 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(node(v,dist[v])); } } } } void addedge(int u,int v,int w) { E[u].push_back(Edge(v,w)); }
相关文章推荐
- 洛谷 P3371 【模板】单源最短路径(Dijkstra + 堆优化)
- 【讲解 + 模板】Dijkstra迪杰斯特拉+堆优化
- 【模板】Dijkstra的heap优化
- 单源最短路---dijkstra模板(二叉堆优化)
- aoj-2249 Road Construction 单源最短路dijkstra+堆优化(模板)
- 简单图论(Dijkstra模板) HDU1874:畅通工程
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- Dijkstra + Heap优化模板
- 最短路~dijkstra堆优化模板
- hdu 2544 单源最短路问题 dijkstra+堆优化模板
- P3371 【模板】单源最短路径 SPFA优化 dijkstra堆优化
- luogu解题报告:P1186玛丽卡【图论/最短路/堆优化dijkstra】
- 【模板】Dijkstra堆优化
- Dijkstra堆优化与SPFA模板
- 最短路 + 邻接表 + 堆优化(模板)(Dijkstra + SPFA)
- Dijkstra+堆优化 模板
- [ 模板 ] 堆优化Dijkstra
- 【模板】Dijkstra+前向星+堆优化 (模板题:洛谷P3371)
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路);Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- Dijkstra + 优先队列优化 模板