最短路模板 floyd+dijkstra+spfa
2016-10-24 18:25
555 查看
floyd
dijkstra+heap
SPFA
SPFA_SLF
void flyod() { for(int k = 1; k <= V; k ++) for(int i = 1; i <= V; i ++) for(int j = 1; j <= V; j ++) dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]); }
dijkstra+heap
struct zt{ int v, d; bool operator < (const zt b) const { return d > b.d; } }; priority_queue <zt> q; void dijkstra(int s) { memset(dis, 63, sizeof(dis)); dis[s] = 0; q.push((zt){s,0}); while(q.size()) { int x = q.top().v; q.pop(); if(done[x]) continue; done[x] = 1; for(int i = first[x]; i != -1; i = nxt[i]) { int v = es[i].to; if(dis[v] > dis[x] + es[i].cost) { dis[v] = dis[x] + es[i].cost; q.push((zt){v,dis[v]}); } } } }
SPFA
queue <int> q; void spfa(int s) { memset(dis,63,sizeof(dis)); dis[s] = 0; q.push(s); used[s] = 1; while(q.size()) { int x = q.front(); q.pop(); used[x] = 0; for(int i = first[x]; i != -1; i = nxt[i]) { int v = es[i].to; if(dis[v] > dis[x] + es[i].cost) { dis[v] = dis[x] + es[i].cost; if(!used[v]) { q.push(v); used[v] = 1; } } } } }
SPFA_SLF
deque <int> q; void spfa(int s) { memset(dis,63,sizeof(dis)); dis[s] = 0; q.push_front(s); used[s] = 1; while(q.size()) { int x = q.front(); q.pop_front(); used[x] = 0; for(int i = first[x]; i != -1; i = nxt[i]) { int v = es[i].to; if(dis[v] > dis[x] + es[i].cost) { dis[v] = dis[x] + es[i].cost; if(!used[v]) { if(q.empty()) q.push_back(v); else if(dis[v] <= dis[q.front()]) q.push_front(v); else q.push_back(v); used[v] = 1; } } } } }
相关文章推荐
- hdu-2544-最短路(Dijkstra + Dijkstra优先队列 + Bellman-ford + SPFA +Floyd) 纯模板题
- Floyd,Dijkstra,SPFA模板整理(以[HDU2544-最短路]为例 )
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- ACM_最短路模板(SPFA,Dijkstra,Floyd)
- 模板--Floyd Dijkstra Bellman-Ford spfa 四种最短路经典算法
- 最短路模板[spfa][dijkstra+堆优化][floyd]
- Hdu 2544 最短路 (Dijkstra+SPFA+Floyd模板)
- 【原创】最短路模板 Floyd,优先队列优化dijkstra,SPFA
- 最短路模板 Dijkstra+Floyd+SPFA
- [模板]最短路 (Floyd, Spfa, Dijkstra,
- 【数据结构】有向图、无向图以及最短路(Dijkstra, Floyd)算法的C#实现(纯模板Template实现)
- 最短路知识点总结(Dijkstra,Floyd,SPFA,Bellman-Ford)
- 【最短路+dijkstra+floyd+spfa】1596 find the safest road
- 最短路的Floyd-Dijkstra-Spfa板子
- 最短路 spfa, dijkstra, Floyd
- 最短路模板(SPFA+dijkstra)
- HDU 1596(find the safest road) 最短路(SPFA&FLOYD&Dijkstra)
- 最短路(floyd/dijkstra/bellmanford/spaf 模板)
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
- HDOJ 1869 六度分离 (最短路 Dijkstra && SPFA && Floyd)