差分约束系统

  • 算法简介

差分约束系统是一种特殊的n元一次不等式,包含n个变量x_1 \rightarrow x_{n},以及m个约束条件,每个约束条件由两个变量做差构成的,形如:x_{i} -x_{j}\leq c_{k}, 其中c_{k}是常数,c_{k} \in \mathbb{ Z }

常规约束条件为:x_{i} - x_{j}\leq c_{k},可变形为x_{i} \leq x_j +c_{k},和最短路进行更新扩展的不等式很相似

因此可以把每个变量x_i看作一个节点i,对于每个约束条件,从x_jx_i连一条边权为c_{k}的边

感性理解,在跑最短路时,会按照变形后的不等式扩展。符合条件

若图中存在负环,则给定差分约数系统无解,否则x_{i} = dis[i]就是满足条件的一组解

在如上不等式为小于等于形式跑最短路,因为得到一组解后,不论加几都满足条件,求最短即可

同时若为不等号朝右的形式,改为计算单源最长路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值