刘汝佳 Dijkstra 队列优化
2017-10-05 22:37
429 查看
const int inf=999999999;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到各点距离int p[maxn];void init(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);}struct HeapNode{int d,u;bool operator < (const HeapNode& rhs) const{return d>rhs.d;}};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_back(HeapNode{0,s});while(!Q.empty()){HeapNode x=Q.top();Q.pop();int u=x.u;if(done(u)) 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});}}}}};
相关文章推荐
- dijkstra的优先队列优化
- Dijkstra普通算法及优先队列优化
- hdu 2112 HDU Today 优先队列优化的Dijkstra+map
- poj 1847 最短路 dijkstra模板(vector邻接表+队列优化)
- 最短路练习10/poj/1511 Invitation Cards ,(两次spfa),(单源最短路,优先队列优化的Dijkstra)
- uva 11374 最短路+记录路径 好题 dijkstra优先队列优化算法 邻接表法 可做模板 G++提交
- hdu 2066最短路 dijkstra 及其优先队列优化
- UVa 10986 Sending email / 优先队列优化dijkstra
- hdu 1874 畅通工程续 dijsktra dijkstra+邻接表 优先队列 bellman-ford bellman-ford队列优化(基础题目,一步步优化)
- Dijkstra队列优化矩阵版
- POJ3268_Silver Cow Party_队列优化的Dijkstra
- pku 1511 Invitation Cards (SPFA 和 dijkstra+优先级队列优化)
- spfa dijkstra队列优化
- 用优先级队列优化dijkstra
- Dijkstra算法之优先队列优化版本 By ACReaper Dijkstra
- dijkstra队列优化
- PriorityQueue+Dijkstra优先队列优化的Dijstra
- HDU ~ 2544 ~ 最短路 (Dijkstra模板,常规版 and 优先队列优化版)
- hdu2544 最短路 dijkstra的使用优先队列优化的比较
- dijkstra队列优化链式前向星(C++、Java)