最短路之Bellman-ford 算法

本文介绍了Bellman-Ford算法,用于在单源有向图中寻找最短路径,尤其适用于存在负权边的情况。通过动态规划的方式,进行n-1轮松弛操作来找到最短路径。在实现c++代码时需注意图的类型,无向图中边的数量是节点数的两倍,并要检查是否存在负权回路,以防止错误结果。
摘要由CSDN通过智能技术生成

Bellman-ford 算法

算法摘要

作用:单源有向图上求最短路
特点:能适应负权边的情况
思想:动态规划
时间复杂度: O(点数×变数)
原理:对所有的边进行n-1轮松弛操作,(n个顶点的图中,任意两点之间的路径最多包含n-1边)
注意事项:需要判断是否产生负权回路 (再对边进行一次内部循环,如果还有可以松弛的点,说明有负权回路)

c++代码

#include<iostream>
#include<vector>
#define ARRAY vector<int> //下标从0开始有效
#define INF	99999999
using namespace std;

struct Edge {
   
	int from;
	int to;
	int val;
};

vector<Edge> edges;
int nodesNum, edgeNum, startPoint;

int main(){
   
	//获取输入输入
	scanf("%d %d %d", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值