首页 > 其他分享 >城市间货物运输Ⅰ-卡玛(Bellman_ford)

城市间货物运输Ⅰ-卡玛(Bellman_ford)

时间:2024-07-09 12:00:40浏览次数:6  
标签:int edges Bellman ford edge minDist 卡玛

题目链接: 城市间货物运输Ⅰ
本篇学习了代码随想录 Bellman_ford 算法精讲 ,本题是经典的带负权值的单源最短路问题,Dijkstra 求单源最短路问题的前提是图中的边无负权重。当图中的边存在负权重时,就需要使用 Bellman_ford 算法来进行求解了。

Bellman_ford算法的核心思想是 对所有边进行松弛n-1次操作(n为节点数量),从而求得目标最短路。

  • 松弛:minDist[B] = min(minDist[A] + value, minDist[B])
  • 对所有边松弛一次,相当于计算 起点到达 与起点一条边相连的节点 的最短距离,那么计算起点 1 到达 n ,共 n - 1 条边,那么最多需要松弛 n - 1次,就一定能找到最短距离。
  • minDist数组来表达 起点到各个节点的最短距离
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,m,s,t,v;
    cin >> n >> m;
    vector<vector<int>> edges;
    while(m--){
        cin >> s >> t >> v;
        edges.push_back({s, t, v});
    }
    vector<int> minDist(n + 1, INT_MAX);
    minDist[1] = 0;
    for(int i = 1; i < n; i++){
        for(auto& edge : edges){
            if(minDist[edge[0]] != INT_MAX){
                minDist[edge[1]] = min(minDist[edge[1]], minDist[edge[0]] + edge[2]);
            }
        }
    }
    if(minDist[n] == INT_MAX){
        cout << "unconnected" << endl;
    }else{
        cout << minDist[n] << endl;
    }
    return 0;
}

标签:int,edges,Bellman,ford,edge,minDist,卡玛
From: https://blog.csdn.net/why_12134/article/details/140289753

相关文章

  • 参加科学大会-卡玛(堆优化版Dijkstra)
    学习参考:代码随想录与Prim类似,当节点数目较多,边的数量很小的时候(稀疏图),可以考虑从边的角度来求最短路,邻接矩阵遇到稀疏图,会导致申请过大的二维数组造成空间浪费且遍历边的时候需要遍历整个n*n矩阵,造成时间浪费。这时使用邻接链表明显更加符合需求。而在朴素版Dijk......
  • 代码随想录算法训练营第八天 | 344.反转字符串 541.反转字符串Ⅱ 卡玛网:54.替换数字
    344.反转字符串题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。解题:思路:双指针,秒了点击查看代码classSolution:defreverseString......
  • 将stanfordcorenlp的tokenizer换成自定义的(或用stanfordcorenlp对自定义tokenizer分词
    本文是基于中文语料做的,对于英文语料应该也是同理,即同样适用的。分析stanfordcorenlp的分词结果,可以发现,它好像是对最小的中文词进行分词,即其对中文的分词粒度很小,这对于某些nlp场景可能就不太合适了,自然的就想到能不能将stanfordcorenlp中用于分词的tokenizer替换掉,替换成自......
  • Keras深度学习框架实战(3):EfficientNet实现stanford dog分类
    1、通过EfficientNet进行微调以实现图像分类概述通过EfficientNet进行微调以实现图像分类,是一个使用EfficientNet作为预训练模型,并通过微调(fine-tuning)来适应特定图像分类任务的过程。一下是对相关重要术语的解释。EfficientNet:这是一个高效的卷积神经网络(CNN)架构,旨在通过......
  • Stanford斯坦福 CS 224R: 深度强化学习 (7)
    多任务和目标条件强化学习第一章引言1.1多任务学习的动机在之前的课程中,我们学习了强化学习的基本概念和算法,如模仿学习、策略梯度、Q学习等。然而,这些方法在实际应用中往往面临着样本效率低下的挑战。收集大量高质量的互动数据是昂贵且耗时的,特别是对于复杂的决策......
  • Stanford斯坦福 CS 224R: 深度强化学习 (6)
    CS224R离线强化学习:第二部分课程介绍请看第一节内容课程回顾离线强化学习、数据约束和保守性离线强化学习旨在利用离线数据,重复使用离线数据是有益的。其关键挑战是由于πβ......
  • bellmax-ford算的证明
    设\(dist[x]\)表示源点到\(x\)的最短路的距离(图中无负环),若对图中任意一条边\((x,y,z)\)满足\(dist[y]≤dist[x]+z\),那么\(dist\)就是最短路数组证:考虑任意一个点\(a\),假设找出了一条源点到\(a\)的最短路径{\(x_0,x_1,...,x_n,a\)},那么显然这条路径上\(x_0\)到任意一个点一定是最......
  • Bellman_Ford
    基本上用不到的算法,和高精度一样,不常用,用到了又无可代替常用于限制边数的最短路算法。使用范围可以处理任意边权的图,可以处理负环,可以判断负环。时间复杂度\(O(nm)\)。因为太慢了,在求最短路的时候基本用不到,但是它的优化版SPFA则大大优化了时间复杂度,算是最短路里最好用的算......
  • 算法训练day50卡玛70. 爬楼梯(进阶版)Leetcode322. 零钱兑换279. 完全平方数
    57.爬楼梯(第八期模拟笔试)题目分析我们可以使用动态规划。动态规划的思想是用一个数组dp来保存到达每一级台阶的方法数。对于每一级台阶i,你可以从i-1,i-2,...,i-m级台阶爬上来(只要这些台阶的索引大于等于0),因此到达第i级台阶的方法数就是这些dp[j](i-m<=j<i)的总和。acm......
  • 贝尔曼方程【Bellman Equation】
    强化学习笔记主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程,个人觉得赵老师的课件深入浅出,很适合入门.第一章强化学习基本概念第二章贝尔曼方程文章目录强化学习笔记一、状态值函数贝尔曼方程二、贝尔曼方程的向量形式三、动作值函数参考资料第......