dijkstra与spfa(bellman-Ford)
来源:互联网 发布:vmware mac os 10.12 编辑:程序博客网 时间:2024/06/05 18:53
一丶Dijkstra
:
对于每一个点都进行松弛,一共松弛n-1次。每次都拿当前点,对于未加入图中的点进行松弛,核心代码:
for(int i=1;i<=n;i++) { minn=INF; for(int j=1;j<=n;j++) { if(!vis[j]&&dis[j]<minn ) { index=j; minn=dis[j]; } } vis[index]=1; for(int j=1;j<=n;j++) { if(!vis[j]&&dis[j]>mp[index][j]+dis[index]) { dis[j]=mp[index][j]+dis[index]; } } }二丶bellman-Ford
:
进行n-1次松弛,每次松弛一条边:
for(k=1;k<=n-1;k++)//进行n-1次松弛for(i=1;i<=m;i++)//枚举一点 if(dis[v]>dis[u]+w[i])//尝试松弛 dis[v]=dis[u]+w[i];
队列优化:Spfa
int spfa(){ queue <int > q; for(int i=1;i<=n;i++) dist[i]=inf,vis[i]=0,cnt[i]=0; int cur=1; q.push(cur); vis[cur]=1; cnt[cur]=1; dist[cur]=0; while(!q.empty()) { cur=q.front(); q.pop(); vis[cur]=0; for(int i=head[cur];i!=-1;i=edge[i].next) { int id=edge[i].to; if(dist[id]>dist[cur]+edge[i].val ) { dist[id]=dist[cur]+edge[i].val; if(!vis[id]) { cnt[id]++; vis[id]=1; q.push(id); if(cnt[cur]>n) return 1; } } } } return 0;}
0 0
- dijkstra与spfa(bellman-Ford)
- HDU 2544(Floyd、Dijkstra、Bellman-Ford、SPFA)
- Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 最短路算法 Dijkstra Bellman-Ford SPFA
- Dijkstra、Bellman-ford、SPFA、Floyd算法
- (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
- Bellman-ford算法学习与SPFA算法
- Dijkstra Bellman-Ford SPFA 几种最短路径求法 基本理论
- HDU2544_最短路(Dijkstra)(Bellman-Ford)(SPFA+邻接表/邻接矩阵)
- HDU-#2544 最短路(Dijkstra、Floyd、Bellman-Ford、SPFA)
- 单源最短路径(Bellman-ford, dijkstra , SPFA)介绍
- [图论] 最短路径(Bellman-Ford , SPFA , Floyed , Dijkstra)
- [图论] 最短路径(Bellman-Ford , SPFA , Floyed , Dijkstra)
- 几大最短路径算法比较(Floyd & Dijkstra & Bellman-Ford & SPFA)
- 最短路(SPFA、Dijkstra、Floyd、Bellman-Ford)
- RST复位报文段
- AJAX
- 【JavaScript】jQuery中的事件与动画
- Fragment Hide() Show()切换实例
- RibbonControl 转 XML树
- dijkstra与spfa(bellman-Ford)
- 编程基础设计与算法-24种设计模式和7大原则
- SpringMVC小结
- STL里set函数的基本应用
- 关于Double、Float精度修改问题
- websocket的小记
- XGboost文献学习笔记
- JavaEE的过往EJB、JNDI、Servlet、JSP、JMS、JTA等规范
- win7远程桌面如何退出全屏或全屏切换