<题解>洛谷P3385 【模板】负环
判断一张图中是否存在关于顶点1的负环:

可以用SPFA跑一遍,存在负环的情况就是点进队大于n次
因为在存在负环的情况下,SPFA会越跑越小,跑进死循环
在最差的情况下,存在的负环长度是“n+1个顶点”这么长
rt:

显然这是n个点长度,但不是环;

这就是一个环,n+1个点的长度;
所以代码很明了了,只需将一般SPFA改动一点饥渴
CODE:
#include<bits/stdc++.h>万能头,懒得打很多头文件
using namespace std;
//数据是骗人的,要开大..
const int maxn=;
//基本的变量或者数组都是:
queue<int > q;
bool visited[maxn];
int head[maxn],cnt,js[maxn],dis[maxn];
struct ppap {
int next,to,dis;
} edge[maxn];
int t,n,m;
//快读部分
int read() {
bool f=;
char ch;
int x=;
ch=getchar();
while(ch>''||ch<'') {
if(ch=='-')
f=!f;
ch=getchar();
}
while(ch<=''&&ch>='') {
x=x*+ch-'';
ch=getchar();
}
return !f?x:-x;
}
//链式前向星添边
void add(int from,int to,int dis) {
edge[++cnt].next=head[from];
head[from]=cnt;
edge[cnt].to=to;
edge[cnt].dis=dis;
}
//和常见spfa一样,在其中判断条件即可
bool SPFA() {
q.push();
visited[]=;
dis[]=;
js[]=;
while(!q.empty()) {
int u=q.front();
q.pop();
visited[u]=;
for(int i=head[u]; i; i=edge[i].next) {
int v=edge[i].to;
if(dis[v]>dis[u]+edge[i].dis) {
dis[v]=dis[u]+edge[i].dis;
if(visited[v]==) {
js[v]=js[u]+;
if(js[v]>n) return true;
visited[v]=;
q.push(v);
}
}
}
}
return false;
} int main() {
t=read();
while(t--) {
n=read(),m=read();
memset(head,,sizeof head);
memset(js,,sizeof js);
memset(edge,,sizeof edge);
memset(dis,0x3f,sizeof dis);
memset(visited,,sizeof visited);
//初始化
for(int i=,a,b,w; i<=m; i++) {
a=read(),b=read(),w=read();
add(a,b,w);
if(w>=)
add(b,a,w);
}
if(SPFA()) cout<<"YE5"<<"\n";
else cout<<"N0"<<"\n";
}
return ;//平淡的结束
}
<题解>洛谷P3385 【模板】负环的更多相关文章
- 洛谷P3385 [模板]负环 [SPFA]
题目传送门 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个 ...
- 洛谷P3385判负环——spfa
题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...
- 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...
- 洛谷P3385 【模板】负环(DFS求环)
洛谷题目传送门 HNOI爆零前回刷模板题 非常不正经的题目,目前并没有合适的优秀算法,就算是大家公认的dfs(还是不要强行叫dfs-spfa吧,概念应该不一样,这就是暴力dfs松弛答案) 但是对于随机 ...
- 洛谷 P3385 【模板】负环
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M ...
- 洛谷 P3385 【模板】负环 题解
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...
- 洛谷—— P3385 【模板】负环
题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 ...
- 题解【洛谷P3385】【模板】负环
题目描述 暴力枚举/\(SPFA\)/\(Bellman-ford\)/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入输出格式 输入格式 第一行一个正整 ...
- 【模板】负环(SPFA/Bellman-Ford)/洛谷P3385
题目链接 https://www.luogu.com.cn/problem/P3385 题目大意 给定一个 \(n\) 个点有向点权图,求是否存在从 \(1\) 点出发能到达的负环. 题目解析 \(S ...
- 【洛谷P3385】模板-负环
这道题普通的bfs spfa或者ballen ford会T 所以我们使用dfs spfa 原因在于,bfs sfpa中每个节点的入队次数不定,退出操作不及时,而dfs则不会 既然,我们需要找负环,那么 ...
随机推荐
- 090 Subsets II 子集 II
给定一个可能包含重复整数的列表,返回所有可能的子集(幂集).注意事项:解决方案集不能包含重复的子集.例如,如果 nums = [1,2,2],答案为:[ [2], [1], [1,2,2], ...
- Caused by: javax.el.PropertyNotFoundException: Property 'title' not found on type java.lang.String
问题:在JSP页面显示从后台传过来的list集合数据报错. 错误信息: Caused by: javax.el.PropertyNotFoundException: Property 'title' ...
- 【Web应用】JAVA网络上传大文件报500错误
问题描述 当通过 JAVA 网站上传大文件,会报 500 错误. 问题分析 因为 Azure 的 Java 网站都是基于 IIS 转发的,所以我们需要关注 IIS 的文件上传限制以及 requestT ...
- jmeter中通过jdbc方式连接mysql数据库的配置参考
jmeter中通过jdbc方式连接mysql数据库的配置参考: Database URL=jdbc:mysql://ip:port/dbname?useUnicode=true&allowMu ...
- static心得
TextClass text; 吉晨 static注意 只要显式调用一个类的某一个static变量,那么就会连带static块,所有static变量一起调用,哪怕不去new一个对象,这时候已经对这 ...
- FZU 1977 Pandora adventure (插头DP,常规)
题意:有一个n*m矩阵,其中有些格子必走,有些格子不可走,其他格子是可走也可不走,问有多少条哈密顿回路? 思路: 本来是一道很简单的题,代码写多了连白痴bug都查不出了,竟然用i>=ex& ...
- tomcat配置 —— 各个目录的作用
tomcat各目录(文件)作用 tomcat-7.0.50解压版,主目录一览: 我们可以看到主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹,下面对他们分别 ...
- 6.3 lambda 表达式
6.3.1 lambda 表达式是一个可传递的代码块,可以在以后执行一次或者多次. 思考(如何按指定时间间隔完成工作,将这个工作放在一个ActionListener的actionPerformed方法 ...
- Codeforces Gym 100650B Countdown (离线)
题目链接:http://codeforces.com/gym/100650 根据给出的树和d,求出一些结点,这些结点形成子树的第d层结点数应该尽量多,具体要求可以参考题目. dfs一个结点前保存询问深 ...
- dubbo 分布式治理
1. dubbo 仅支持java语言之间的通讯. 2. dubbo 产生的背景是因为分布式的情况下产生的. 3. 解决服务治理的问题,通过注册中心进行管理 4.SOA 治理方案 tcp 协议传输,只需 ...