首页 > 其他分享 >差分约束

差分约束

时间:2022-09-03 11:57:11浏览次数:53  
标签:le int 差分 约束 spfa edge true dis

其实就是spfa 话说看spfa的时候突然发现我原来判负环的板子是锅的然后wa了好几次

就是形如\(x_i-x_j\le k\)的一群问题。我们发现把这个东西移个项之后变成了

\[x_i \le x_j+k \]

看着长的就很像最短路。所以就从\(j\)到\(i\)连一条权值为\(k\)的边,用最短路搞吧。特别的,有负环的时候直接判无解。

还有别忘了从0开始向所有点连一个权值0的边。

还有一些长得比较奇怪的,比如\(x_i-x_j\ge k\)这样的。就两边同乘个\(-1\)就成了

\[x_j-x_i\le -k \]

这样的了。还有长得像\(x_i-x_j=k\)的。拆成一个\(\le\)一个\(\ge\)就行了。

整个板子吧。就洛谷的板子。

bool spfa(int x){
	dis[x]=0;v[x]=true;q.push(x);
	while(!q.empty()){
		int x=q.front();q.pop();v[x]=false;
		for(int i=head[x];i;i=edge[i].next){
			if(dis[edge[i].v]>dis[x]+edge[i].w){
				dis[edge[i].v]=dis[x]+edge[i].w;
				if(!v[edge[i].v]){
					v[edge[i].v]=true;q.push(edge[i].v);
					cnt[edge[i].v]++;
					if(cnt[edge[i].v]>n)return false;
				}
			}
		}
	}
	return true;
}
int main(){
	memset(dis,0x3f,sizeof(dis));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)add(0,i,0);
	for(int i=1;i<=m;i++){
		int u,v,w;scanf("%d%d%d",&v,&u,&w);
		add(u,v,w);
	}
	if(!spfa(0)){
		printf("NO");
		return 0;
	}
	for(int i=1;i<=n;i++)printf("%d ",dis[i]);
	return 0;
}

标签:le,int,差分,约束,spfa,edge,true,dis
From: https://www.cnblogs.com/gtm1514/p/16652280.html

相关文章

  • 差分约束
    差分约束模板:P5960【模板】差分约束算法-洛谷|计算机科学教育新生态(luogu.com.cn)例题:Problem-7176(hdu.edu.cn)有n个未知数,m个不等式.将所有不等式化......
  • 给Docker集群中Label节点打上标签与服务约束
    https://www.cnblogs.com/caoweixiong/p/12382282.htmlLabel作用:在服务器中通常需要将某个服务固定在某一台机器上运行的时候,可以给集群中的机器打上标签......
  • 30. SQL--check:检查性约束
    1.前言sqlcheck约束(检查性约束)用来限制字段的取值范围。您可以在check约束中添加限制条件,只有满足这些条件的值才允许进入该字段。您可以为一个字段或者多个字段定......
  • 差分约束:求最小->求所有下界的最大->最长路 √
    最长路如果有正环就输出无解a>b那么b到a连一条长度为1的边结论:一个正环一定是某个scc中的对于某个scc中的所有边,只要又一个边的权重是严格>0因为u+w->bw>0又u和v......
  • 27. SQL--default:默认约束
    1.前言default约束用于给字段指定一个默认值,当使用insertinto语句向表中插入数据时,如果没有为该字段提供具体的值,那么就使用这个默认值。2.示例下面的sql语句将......
  • 方差分析、T检验、卡方分析如何区分?
    差异研究的目的在于比较两组数据或多组数据之间的差异,通常包括以下几类分析方法,分别是方差分析、T检验和卡方检验。三个方法的区别其实核心的区别在于:数据类型不一样。......
  • Gym 101775J Straight Master(差分数组)
    题意:给你n个高度,再给你1n每种高度的数量,已知高度连续的35个能消去,问你所给的情况能否全部消去;例:n=4,给出序列1221表示高度1的1个,高度2的2个,高度3的2个,高度4的1个。那......
  • 2022牛客多校 第9场 C Global Positioning System(讨论+lca+树上差分)
    传送门若干条路径生成了一个无向连通图,只有所有简单回路对应的向量为\(0\)向量时合法。需要改变的边是满足这个边是所有不为\(0\)回路的交且不属于所有为\(0\)的回路。......
  • 【转载】数字设计中的时钟与约束
    转载出处:http://www.cnblogs.com/IClearner/最近做完了synopsys的DCworkshop,涉及到时钟的建模/约束,这里就来聊聊数字中的时钟(与建模)吧。主要内容如下所示:......
  • constraint_mode( ):控制约束
    与rand_mode()类似,还有一个constraint_mode()可以打开/关闭约束。constraint_mode()方法可用于控制约束是活动的还是非活动的。当约束处于非活动状态时,randomize(......