首页 > 其他分享 >[学习笔记] 差分约束系统

[学习笔记] 差分约束系统

时间:2022-10-28 20:11:53浏览次数:46  
标签:nxt head int 差分 ecnt 约束 len 笔记 dis

解决问题

解不等式方程。
形如\(x_i\le x_j+w\)
ps.等式可以化为两个不等式

解决方法。

相当于每条有向边松弛后的柿子。
所以跑最短路即可。
但有可能负权,而且要判无解(有负环)。
跑spfa即可

code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, m, head[N], to[N], nxt[N], len[N], ecnt, cnt[N], dis[N];
bool In_s[N];
void add_edge(int u, int v, int w) {nxt[++ecnt] = head[u]; to[ecnt] = v; len[ecnt] = w; head[u] = ecnt;}
void spfa() {
	memset(dis, 0x3f, sizeof(dis));
	queue<int> Q;
	Q.push(0); dis[0] = 0;
	while(!Q.empty()) {
		int u = Q.front(); Q.pop();
		In_s[u] = 0;
		for(int i = head[u]; i; i = nxt[i]) {
			int v = to[i]; 
			if(dis[v] > dis[u] + len[i]) {
				dis[v] = dis[u] + len[i];
				if(!In_s[v]) {
					In_s[v] = 1, Q.push(v);
					if(++cnt[v] > n) {printf("NO"); exit(0);}
				}
			}
		}
	}
}
int main() {
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; i++) {add_edge(0, i, 0);}
	for(int i = 1; i <= m; i++) {
		int y, x, w;
		scanf("%d%d%d", &y, &x, &w);
		add_edge(x, y, w);
	}
	spfa();
	for(int i = 1; i <= n; i++) {
		printf("%d ", dis[i]);
	}
	return 0;
}

标签:nxt,head,int,差分,ecnt,约束,len,笔记,dis
From: https://www.cnblogs.com/bestime/p/16837337.html

相关文章

  • 【CF1120D】Power Tree(建图,差分,最小生成树)
    题面题意有点难懂。主要是洛谷给的翻译太zz了。大概的意思是:给定一棵\(n\)个点的有根树,\(1\)为根,每一个点有一个代价\(c_i\)。然后有两个人Alice和Bob在玩游......
  • Sass、Scss、Less笔记
    一、Sass和SCSS有什么区别? SCSS是Sass3引入新的语法,其语法完全兼容CSS3,并且继承了Sass的强大功能。Sass和SCSS其实是同一种东西,我们平时都称之为Sass,两者之......
  • Spring Boot 学习笔记
    SpringBoot简介为什么要使用SpringBoot因为Spring,SpringMVC需要使用的大量的配置文件(xml文件)还需要配置各种对象,把使用的对象放入到spring容器中才能使用对象......
  • 【ARC080F】Prime Flip(二分图匹配,差分)
    这种区间反转的题,套路就是差分。设\(a_i\)表示第\(i\)枚硬币是否正面朝上,显然只有\(a_{x_1},a_{x_2},\cdots,a_{x_n}\)等于\(1\),其他都是\(0\)。那么我们的目标是......
  • sql server 中有哪几种约束?
    sqlserver中有哪几种约束? 一共有六种约束:这里以学生表stuinfo为例1、添加主键约束altertablestuinfoaddcostraintpk_stunoprimarykey(stuno)2、2、唯一约......
  • sqlserver索引和约束
     sqlserver索引和约束 ==========================================================----查找索引----usedatabase_nameEXECSp_helpindextable_nameuseTeama......
  • 【算法学习笔记】斯坦纳树
    【算法学习笔记】斯坦纳树因为离散的论文打算写这个,所以开始学。今天先写了模板题,存一下代码,等写论文的时候再来补充原理模板#include<bits/stdc++.h>usingnamespa......
  • docker笔记
    docker是linux容器的一种实现,也是现在最火的容器。容器就是一个隔离的进程,具有启动快、占用资源少、占用空间少等特点。dockerfile是文本配置文件imagefile......
  • MSSQL基本常用笔记
    --读取库中的所有表名selectnamefromsysobjectswherextype='u'orderbynamedesc--读取指定表的所有列名 selectnamefromsyscolumnswhereid=(selectmax(......
  • MHATC系统笔记2
    Tip:1、修改FDO.jar解决导入长期计划时,如果航路为空导入不成功问题;原来的代码是有条件删除长期计划历史库中的数据,导致从长期计划向长期计划历史库中转存数据时两个表中存在......