bellman ford 算法求最短路径

 #include <iostream>
using namespace std;
const int maxnum = ;
const int maxint = ; // 边,
typedef struct Edge{
int u, v; // 起点,重点
int weight; // 边的权值
}Edge; Edge edge[maxnum]; // 保存边的值
int dist[maxnum]; // 结点到源点最小距离 int nodenum, edgenum, source; // 结点数,边数,源点 // 初始化图
void init()
{
// 输入结点数,边数,源点
cin >> nodenum >> edgenum >> source;
for (int i = ; i <= nodenum; ++i)
dist[i] = maxint;
dist[source] = ;
for (int i = ; i <= edgenum; ++i)
{
cin >> edge[i].u >> edge[i].v >> edge[i].weight;
if (edge[i].u == source) //注意这里设置初始情况
dist[edge[i].v] = edge[i].weight;
}
} // 松弛计算
void relax(int u, int v, int weight)
{
if (dist[v] > dist[u] + weight)
dist[v] = dist[u] + weight;
} bool Bellman_Ford()
{
for (int i = ; i <= nodenum - ; ++i)
for (int j = ; j <= edgenum; ++j)
relax(edge[j].u, edge[j].v, edge[j].weight);
bool flag = ;
// 判断是否有负环路
for (int i = ; i <= edgenum; ++i)
if (dist[edge[i].v] > dist[edge[i].u] + edge[i].weight)
{
flag = ;
break;
}
return flag;
}
int main()
{
//freopen("input3.txt", "r", stdin);
init();
if (Bellman_Ford())
for (int i = ; i <= nodenum; i++)
cout << dist[i] << endl;
return ;
}

最新文章

  1. 对Hibernate的理解
  2. css权值计算
  3. Windows 10系统更换Windows 7系统磁盘分区注意事项二
  4. jquery 之ajax获取数据
  5. LAMP环境的搭建
  6. reactor设计模式
  7. winform访问url传参有返回值
  8. hibernate初体验
  9. Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit
  10. logback的使用和logback.xml详解
  11. LNMP下FTP服务器的安装和使用(Pureftpd和Proftpd)
  12. MySQL的char和varchar针对空格的处理
  13. linux抓包工具Charles的配置安装
  14. vue将表格导出为excel
  15. 网页使用思源字体 CSS
  16. 关于正则表达式的“\b”
  17. keepalived的配置详解(非常详细)
  18. DI spring.net简单使用
  19. 如何取得SharePoint Timer Job的历史成功数和失败数,并按照日期计算排列
  20. 【Leetcode】【Easy】Isomorphic Strings

热门文章

  1. 一文搞定Flask
  2. Html设置问题(设置浏览器上面的图标,移动设备上面页面保存为图标)
  3. yii框架中的各种小问题
  4. Net Core 自定义 Middleware 加密解密
  5. MVC通过ViewBag动态生成Html输出到View
  6. 设计模式--Bulider模式
  7. 77.JS本地保存数据的几种方法
  8. nginx小结
  9. vue v-for中的item改变无法引起视图的更新
  10. Django-模型层(单表操作)