Bellman-ford算法 实现源点最短路径 允许路径中有负权值
来源:互联网 发布:程序员 显示器 知乎 编辑:程序博客网 时间:2024/06/15 20:51
#include<stdio.h>#include<string.h>#define INF 1000#define MAXN 20int n,m;int Edge[MAXN][MAXN];int S[MAXN]; //表示是否找到最短路径int dist[MAXN]; //表示当前最短路径的距离int path[MAXN];//最短路径的上一个顶点void Bellman(int v0){int i,j,k,u;for(i=0;i<n;i++){dist[i]=Edge[v0][i];if(i!=v0 && dist[i]<INF)path[i]=v0;else path[i]=-1;}for(k=2;k<n;k++){for(u=0;u<n;u++){if(u!=0){for(j=0;j<n;j++)if(Edge[j][u]<INF && dist[j]+Edge[j][u]<dist[u]){dist[u]=dist[j]+Edge[j][u];path[u]=j;}}}}}int main(){int i,j,k;int u,v,w;int shortest[MAXN];scanf("%d %d",&n,&m);memset(Edge,0,sizeof(Edge));for(j=0;j<m;j++){scanf("%d%d%d",&u,&v,&w);Edge[u][v]=w;}for(i=0;i<n;i++){for(j=0;j<n;j++)if(i==j)Edge[i][j]=0;else if(Edge[i][j]==0)Edge[i][j]=INF;}Bellman(0);for(i=1;i<n;i++){printf("%d\t",dist[i]);memset(shortest,0,sizeof(shortest));k=0;shortest[k]=i;while(path[shortest[k]]!=0){k++;shortest[k]=path[shortest[k-1]];}k++;shortest[k]=0;for(j=k;j>0;j--)printf("%d->",shortest[j]);printf("%d\n",shortest[0]);}system("PAUSE");return 0;}
0 0
- Bellman-ford算法 实现源点最短路径 允许路径中有负权值
- POJ 3259 -- 最短路径 ( bellman ford算法, 允许负权边)
- 单源点最短路径Bellman算法实现
- Bellman-ford算法求解单源点最短路径初始版本
- 图的最短路径算法(四)--Bellman-Ford(解决负权边)单源点最短路径
- 最短路径算法---Bellman-Ford
- 最短路径Bellman-Ford算法
- 【算法】最短路径之Bellman-Ford
- 最短路径bellman-ford算法模板
- Bellman Ford 最短路径算法
- Bellman-Ford算法【最短路径】
- Bellman ford 最短路径算法
- BellMan-Ford算法--寻找最短路径
- 【图】最短路径Bellman-Ford算法
- 最短路径(Bellman-Ford算法)
- 最短路径算法—Bellman-Ford
- Bellman-Ford最短路径算法
- Bellman-Ford 最短路径算法 图示与实现
- 无聊
- Android ART机制分析
- Android 绘图demo
- 使用PLSQL工具时,ORACLE客户端连接串的配置
- 那一夜
- Bellman-ford算法 实现源点最短路径 允许路径中有负权值
- QT的信号与槽机制介绍
- vs2010 + win7 64位 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Guided Image Filtering学习笔记
- 嵌入式 BT656/BT601/BT1120协议差异小结
- erlang Mod:module_info
- php 的session操作使用
- 【HDU】4597 Play Game(DP+记忆化搜索)
- Invalid state, the Connection object is closed.