Bellman_Ford 模板

博客提供了 Bellman_Ford 算法的模板,可用于相关算法问题的解决,在信息技术领域的算法应用方面有一定价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bellman_Ford 模板

#include<cstdio>
#include<algorithm>
#define maxn 10005
#define INF 0x3f3f3f3f
using namespace std; 

int n,m,u[maxn],v[maxn],w[maxn],dis[maxn];

void init(){    //初始化
	for(int i=1; i<=n; i++)
		dis[i] = ( i == 1 ) ? 0 : INF;
} 

void Bellman_ford(){
	for(int k=1; k<n; k++)
	    for(int i=1; i<=m; i++)
	        dis[v[i]] = min(dis[v[i]],dis[u[i]]+w[i]);  //起点到v,起点到u + u到v,将这两种路径进行比较,取最短的路径。
} 

int main(){
	int a,b,c;
	while(scanf("%d%d",&n,&m),n+m){
		init();
		for(int i=1; i<=m; i++)
			scanf("%d%d%d",&u[i],&v[i],&w[i]);   //这三个数组也可以写成一个结构体
		Bellman_ford();
		printf("%d\n",dis[n]);
	}
	return 0;
}

 

### 关于Bellman-Ford算法在洛谷平台的信息 Bellman-Ford算法作为一种能够处理带负权边的单源最短路径问题的方法,在编程竞赛平台上有着广泛的应用场景。对于希望练习或了解此算法实现细节的学习者而言,洛谷(Luogu)是一个极佳的选择[^1]。 #### 洛谷上有关Bellman-Ford算法的具体题目实例 1. **P3371 【模板】单源最短路径 (标准版)** 这道题提供了测试各种不同类型的最短路径算法的机会,其中包括了对Bellman-Ford的支持。通过这道题目的训练可以帮助理解如何有效地利用该算法来解决问题[^2]。 2. **P4779 【模板】单源最短路径 II** 此题进一步加深了对复杂情况下的最短路径求解能力的要求,特别是当图中含有负权边的情况下,非常适合用来巩固对Bellman-Ford的理解和运用技巧[^3]。 3. **P1850 [NOI1997] 华容道游戏** 虽然这不是一个典型的最短路径问题,但是可以通过构建合适的模型将其转化为可以用Bellman-Ford解决的形式,从而提供了一个更有趣的视角来看待这一经典算法的应用范围[^4]。 为了更好地理解和实践这些题目,建议先熟悉基本概念并尝试手动模拟几个例子,然后再编写代码去验证自己的想法。此外,阅读其他用户的优秀解答也是一种很好的学习方式[^5]。 ```python from collections import deque, defaultdict def bellman_ford(n, edges, start): dist = {node: float('inf') for node in range(1, n + 1)} dist[start] = 0 for _ in range(n - 1): # Relax all edges up to |V| - 1 times relaxed = False for u, v, w in edges: if dist[u] != float('inf') and dist[v] > dist[u] + w: dist[v] = dist[u] + w relaxed = True if not relaxed: break # Check for negative-weight cycles for u, v, w in edges: if dist[u] != float('inf') and dist[v] > dist[u] + w: return "Negative cycle detected!" return dist ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值