P3385 【模板】负环 题解

news/2025/12/9 22:19:53/文章来源:https://www.cnblogs.com/Creativexxx/p/19328563

差分约束系统是什么?

差分约束系统指的是一个序列 \(x={x_1,x_2,\cdots x_m}\) 和以如下形式出现的 \(n\) 元一次不等式组。

\[\left\{\begin{matrix} x_{i_1}-x_{j_1}\le c_{k_1}\\x_{i_2}-x_{j_2}\le c_{k_2}\\\vdots\\x_{i_n}-x_{j_n}\le c_{k_n}\end{matrix}\right. \]


还是说说前置知识。

P3385 【模板】负环

Description

给你一个 \(n\) 个点的有向图,让你判断图中是否有能从 \(1\) 号点出发可以到达的负环。

负环定义为一条边权和为负的回路。

Solution

思考负环的一些性质。

容易发现负环上一点与任意一点的最短路都不存在,因为你可以跑无数遍负环,边权和会越来越大。我们需要做的是找出一个限度值,如果超过了这个限度值就知道出现了负环。

注意到跑完一次单源最短路最多也就是把所有节点全部入队更新。如果点数为 \(n\),同一个节点最多只可能入队 \(n-1\) 次。

所以,开一个数组 cnt 记录每个节点入队的次数,如果次数超过 \(n-1\) 就说明有负环。

SPFA 在卡满情况下与朴素 Bellman-Ford 复杂度都为 \(O(nm)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
long long T,n,m,tot,head[2005],dis[2005],cnt[2005];
bool vis[2005];
queue<int>q;
struct node{int from,to,w,nxt;
}e[6005];
inline void add_edge(int u,int v,int w){e[++tot].from=u;e[tot].to=v;e[tot].w=w;e[tot].nxt=head[u];head[u]=tot;return;
}
inline bool SPFA(int s){memset(dis,63,sizeof(dis));dis[s]=0;vis[s]=1;q.push(s);while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int i=head[u];i;i=e[i].nxt){int v=e[i].to,w=e[i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;if(!vis[v]){cnt[v]++;if(cnt[v]>=n){return 1;}vis[v]=1;q.push(v);}}}}return 0;
}
signed main(){cin>>T;while(T--){tot=0;memset(head,0,sizeof(head));memset(e,0,sizeof(e));memset(vis,0,sizeof(vis));memset(cnt,0,sizeof(cnt));while(!q.empty()){q.pop();}cin>>n>>m;for(int i=1;i<=m;i++){int u,v,w;cin>>u>>v>>w;if(w>=0){add_edge(u,v,w);add_edge(v,u,w);}else{add_edge(u,v,w);}}if(SPFA(1)){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/995642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

权威盘点:2025年中国智能舆情监控系统市场深度解析

随着数字社会信息生态的持续演进,舆情监控工作已发生根本性变革。传统的人工信息汇总模式,正被集多模态感知、大模型智能研判与前瞻性决策支持于一体的新一代舆情监控系统所取代。行业数据显示,2025年中国舆情监测市…

qemu安装aix7.2

最近想玩玩IBM的AIX系统,由于AIX系统只能运行在IBM的power cpu上,VMware、VirtualBox只支持X86架构,QEMU全仿真的特点可以模拟出power cpu实现系统安装。 AIX系统是IBM开发的一套UNIX操作系统,它可以在所有的IBM p…

编程小白必看!免费体验课大搜罗 - 品牌测评鉴赏家

编程小白必看!免费体验课大搜罗编程小白速进!免费体验课地图来啦 编程热,为何要先体验? 在当今数字化时代,编程已成为一门炙手可热的技能 ,掀起了全民学习的热潮。从职场人士渴望提升竞争力,到家长们为孩子规划…

前端半小时,上线一下午?我用这个平台工程思路统一了全栈部署

全栈开发拯救指南:别再让你的前端去碰 Nginx 和 Docker 了 我名义上是个全栈开发者,但最近感觉自己更像个“全栈救火队员”。 一个前端组件,我可能半小时就写完了。但为了把它上线,我可能需要花一下午的时间,去跟…

2025年国内诚信的微动开关制造厂家推荐榜单,家电微动开关/鼠标微动开关/防水微动开关/微动开关/小型微动开关微动开关制造厂家哪里有 - 品牌推荐师

在工业自动化、智能家居、新能源汽车等产业蓬勃发展的当下,微动开关作为关键的基础电子元件,其可靠性直接关系到终端产品的性能与安全。面对市场上众多的微动开关制造商,采购方与工程师们常常面临“工厂哪家靠谱”的…

ABC352D 题解

ABC352D 题解ABC352D - Description 给你一个 \(n\) 的排列 \(a\),让你选出一个长度为 \(k\) 的 \(a\) 的子序列 \(b=\left [ a_{p_1},a_{p_2},\cdots ,a_{p_k} \right ]\),使得 \(\min b_i +k-1=\max b_i\) 的同时控…

CF1407D 题解

CF1407D 题解CF1407D - Description 有 \(n\) 栋楼,每栋楼有高度 \(h_i\),对于第 \(i\) 栋楼和第 \(j\) 栋楼,如果 \((i,j)\) 满足以下三个条件中的任意一个,我们认为可以从第 \(i\) 栋楼跳到第 \(j\) 栋楼:\(i+1…

12月9号

今天进行了中国古诗词的学习。

C语言深度解剖:第一章关键字(五) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MySQL 筛选条件放 ON 后 vs 放 WHERE 后

ON 决定如何 "连接" 表,WHERE 决定连接后 "显示" 哪些行。 这个根本区别导致了在 LEFT JOIN / RIGHT JOIN 外连接中,条件放置位置会产生巨大影响;而在 INNER JOIN 中,效果通常 等价。今天我们…

明天不干是小狗

明天不干是小狗上一条必须干 我说真的 老己,你干吧,我求求你了

CF547B 题解

CF547B 题解CF547B - Description 给你个长度为 \(n\) 的序列 \(a\),对于每个 \(1\le k\le n\),有 \(n-k+1\) 个中所有长度为 \(k\) 的子串,你需要求出这 \(n-k+1\) 个子串的区间最小值的最大值,即下面式子的值: …

SAT 辅导哪里好?2025 年优质机构推荐(含精准选择指南) - 品牌测评鉴赏家

SAT 辅导哪里好?2025 年优质机构推荐(含精准选择指南)选择 SAT 辅导机构需结合自身基础、目标分数、学习习惯及地域便利性。以下是 2025 年最新优质机构推荐,涵盖线上线下资源,针对不同需求提供精准建议: 一、全…

10403_基于Springboot的旅游管理系统

1、项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2、项目介绍 随着旅游业的发展,越来越多的人选择通过互联网来规划自己的旅行。在线旅游信息推荐系统就是为了帮助用户…

MMH_蓝桥杯Python_语法基础_列表与循环语句基础

1.列表 列表可以极大降低我们在处理多个元素时的复杂程度; 在 Python 中,列表(list) 是一种有序、可变、可存储多种数据类型的序列数据结构,使用中括号 [] 定义,元素之间用逗号分隔。 1.创建列表 代码展示 #包…

2025全屋定制十大品牌哪家好?欧蒂尼硬核实力破局,领衔品质家居新革命 - 资讯焦点

2025年,中国全屋定制行业迎来“质造升级+需求多元”的双重变革,整家定制、智能集成、年轻化设计成为行业主流趋势。在这片竞争激烈的赛道上,一批兼具实力与口碑的品牌脱颖而出,它们以技术为基、以设计为魂、以服务…

keepalived搭建高可用

一、HA集群 1.1 ha集群是什么 高可用集群,是有多台服务器节点组成的集群,通过冗余设计和故障自动切换,保证了核心服务,持续可用,减少了停机时间就是当一个提供网站的服务故障后,另外一台机器充当这个提供网站的角…

P5304 [GXOI/GZOI2019] 旅行者 题解

P5304 [GXOI/GZOI2019] 旅行者 题解P5304 [GXOI/GZOI2019] 旅行者 Description 给你一个 \(n\) 个点,\(m\) 条边的有向连通图,给出 \(k\) 个点的编号,让你求出这些点中距离最近的两点之间距离。 \(n\le 10^5,m\le 5…

2025 年面膜消费指南:告别盲目囤货,10款补水保湿抗老修护爆款适配干油敏肌,精准解决护肤痛点 - 资讯焦点

一抹精华浸润肌底,熬夜的蜡黄倦容悄然褪去;一贴膜布贴合脸颊,换季的泛红干痒即刻舒缓;分区护理精准发力,T 区的油光与 U 区的干纹同时消失 —— 这是 2025 年新一代功效型面膜带来的护肤新体验。 据华泰研究所 20…

P3275 [SCOI2011] 糖果 题解

P3275 [SCOI2011] 糖果 题解P3275 [SCOI2011] 糖果 Description 给你 \(k\) 个指令(约束条件),让你构造一个长度为 \(n\) 的正整数序列 A,满足这个条件的同时让所有元素的和最小。 指令的格式如下:1 a b 表示 \(A…