单元最短路径算法模板汇总(Dijkstra, BF,SPFA),附链式前向星模板
2015-05-19 09:58
495 查看
一:dijkstra算法
时间复杂度,用优先级队列优化的话,O((M+N)logN)
求单源最短路径,要求所有边的权值非负。若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。
设road[i][j]表示相邻的i到j的路长
U集合存储已经求得的到源点最短路径的节点,S集合表示还没求得的节点
dis[i]表示i到源节点(设为0)的最短路径
vis[i]=1表示i节点在U集合中
刚开始dis[0]=0,vis[0]=1;dis[i]=maxn,vis[i]=0;
for 1 to N:
1:从S集合中找出dis[]最小的节点i
将i从S中移出,插入到U中,即vis[i]=1;
2:遍历所有与i相邻的节点j
若dis[i]+road[i][j]<dis[j]
则dis[j]=dis[i]+road[i][j];
3:转1
View Code
时间复杂度,用优先级队列优化的话,O((M+N)logN)
求单源最短路径,要求所有边的权值非负。若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。
设road[i][j]表示相邻的i到j的路长
U集合存储已经求得的到源点最短路径的节点,S集合表示还没求得的节点
dis[i]表示i到源节点(设为0)的最短路径
vis[i]=1表示i节点在U集合中
刚开始dis[0]=0,vis[0]=1;dis[i]=maxn,vis[i]=0;
for 1 to N:
1:从S集合中找出dis[]最小的节点i
将i从S中移出,插入到U中,即vis[i]=1;
2:遍历所有与i相邻的节点j
若dis[i]+road[i][j]<dis[j]
则dis[j]=dis[i]+road[i][j];
3:转1
//邻接链表存储——链式前向星 //head[i]:表示父亲节点i的所有指向子节点的最后一次与i连接的边的序号 //edge[k].next:表示编号为k的边的相邻的一条边的编号,这两条边是同一节点引出的 //edge[k].to:表示编号为k的边所指向的节点编号 //int head ,tot; //n为顶点数,m为边数 struct edge { int next,to; }edge[m] void add(int x,int y) { edge[tot].next =head[x]; edge[tot].to = y; head[x] = tot++; } //初始化 void init() { memset(head,-1,sizeof(head)) tot = 0; } //遍历与x相邻的所有点v for(int k = head[x];k!=-1;k=edge[k].next) { int v = edge[k].to; //... }
View Code
相关文章推荐
- 最短路径算法Dijkstra && SPFA && Floyd 代码实现模板
- 最短路径算法 模板_Dijkstra_Bellman.ford_Floyd_spfa
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 最短路径算法 dijkstra + floyd + spfa 【记录 总结】
- 最短路径:Dijkstra,Bellman,SPFA,Floyd该算法的实施
- Dijkstra单元最短路径算法
- 最短路径算法比较(Dijkstra、Bellman-Ford、SPFA)及实现(Java)
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- hdu 1874 单源最短路径spfa+链式前向星
- HDU 2544(最短路径 SPFA 算法模板)
- 单源最短路径算法模板(Dijkstra+BellmanFrod)
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 单源最短路径算法模板(Dijkstra+BellmanFrod)
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 四种最短路径算法(Dijkstra,Floyd,Bellman-ford&&spfa)
- 最短路径算法总结(Floyd,bellmen-ford,dijkstra,Spfa)
- 单源最短路径:Dijkstra 算法 Bellman_Ford 算法 SPFA 算法
- 最短路径 Dijkstra算法(模板)
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较