首页 > 其他分享 >负环与差分约束

负环与差分约束

时间:2024-02-08 20:44:17浏览次数:24  
标签:短路 Bellman Ford 负环 SPFA 差分 约束 更新

1. 负环

负环是指一个环的边权值之和为负数。有负环的图没有最短路

要判断一个图是否有负环,一般使用 Bellman-Ford 算法或 SPFA 算法。

Bellman-Ford

如果一个图没有负环的话,最短路径最多会经过 \(N-1\) 条边。

如果有,那么在进行 \(N\) 次更新后还能继续更新。

于是用 Bellman-Ford 求解最短路。在更新 \(N\) 次后,如果还能继续更新,那么就说明有负环。

例题 洛谷-P3385

本题可以用 Bellman-Ford 来判断负环。但是题目要求的是判断从顶点 \(1\) 出发能到达的环,而 Bellman-Ford 用来判断整个图中的环,因此不能直接使用。

SPFA

最短路最多经过 \(N-1\) 条边。如果一个点的最短路边数大于等于 \(N\),就说明有负环。用 \(tot_i\) 表示初始点到 \(i\) 的最短路所经过的边数,每次在成功更新距离后更新所经过的边数。代码如下。

if(ds[u]+w<ds[v]){
  ds[v]=ds[u]+w;
  tot[v]=tot[u]+1;
  if(tot[v]>=n){
    return 1;
  }
  if(!vs[v]){
    vs[v]=1;
    q.push(v);
  }
}

接下来将用 SPFA 实现 洛谷-P3385。

代码

标签:短路,Bellman,Ford,负环,SPFA,差分,约束,更新
From: https://www.cnblogs.com/lrxmg139/p/18012115

相关文章

  • 差分约束算法
    一、题目描述P5960【模板】差分约束二、题目简析差分约束问题的典型特征是一组不等式。只要画出约束图,这类问题都可以准换为最短路径问题。注意:约束图是有向图。2.1约束图的顶点约束图的顶点(\(V\))=一个未知数对应一个顶点(\(v_1,v_2,...,v_n\))+一个额外的顶点(\(v_0\)......
  • R语言用随机森林模型的酒店收入和产量预测误差分析
    全文链接:https://tecdat.cn/?p=35162在这篇文章中,我们将探讨基于随机森林模型的酒店收入和产量预测分析。我们将使用4月9日至4月15日的数据作为测试集,评估预测的准确度。我们将分别对单个酒店在三个预订渠道的总收入和总产量进行分析,并使用随机森林模型进行预测。通过对比每家酒......
  • SQL数据库入门03:数据库表的完整性约束、索引与视图的操作
      本文介绍基于MicrosoftSQLServer软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。(数据库基础(三):完整性约束、索引、视图)  系列文章中示例数据来源于《SQLServer实验指导(2005版)》一书。依据本系列文章的思想与对操作步骤、代码的详细解释,大家用......
  • 基础算法(十一)二维差分---以题为例
    输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整......
  • 基础算法(十)差分模板---以题为例
    输入一个长度为 n的整数序列。接下来输入 m个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数序列。接下来 m 行,每行包含三个整数 l,r......
  • 基于资源的约束委派(RBCD)
    概念微软在WindowsServer2012中新引入基于资源的约束性委派(ResourceBasedConstrainedDelegation,RBCD),RBCD不需要通过具备SeEnableDelegationPrivilege权限的域管理员进行修改,而是将设置属性的权限给了服务资源本身。配置了RBCD的账户属性有如下变化:msDS-AllowedToActOn......
  • 差分算法
    差分算法差分算法可以用来维护区间的加减我们假定有一个数组\(a={1,2,3,4}\)\(b\)为数组\(a\)的差分数组。\[b_i=\begin{cases}a_i-a_{i-1}&i\in[2,n]\\a_1&i=1\end{cases}\]根据给定的数组\(a={1,2,3,4}\)我们很容易得知数组\(b={1,1,1,1}\)我......
  • 轻松学习SQL外键约束的核心原理和实用技巧
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。SQL约束-外键约束测试管理......
  • 轻松学习SQL外键约束的核心原理和实用技巧
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。SQL约束-外键约束......
  • 数据库新手必知!轻松学习SQL外键约束的核心原理和实用技巧
    SQL约束-外键约束简介外键约束(FOREIGNKEY,缩写FK)是用来实现数据库表的参照完整性的。它是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须且有主键约束或者唯一约束。被依赖的表通常称之为父表或者主表,设置外键约束的表称为子表或从表。相关概念主键:可以唯一......