【模板】负环(SPFA/Bellman-Ford)/洛谷P3385
题目链接
https://www.luogu.com.cn/problem/P3385
题目大意
给定一个 \(n\) 个点有向点权图,求是否存在从 \(1\) 点出发能到达的负环。
题目解析
\(SPFA\) 单点入队次数 \(\geq n\) ,即存在负环。
时间复杂度 \(O(nm)\)
参考代码
#include <bits/stdc++.h>
#define N 3005
#define M 10005
using namespace std;
const int INF = 0x3f3f3f3f;
struct edge{
int u, v, w;
};
int n, m, T, d[N];
vector <edge> e;
vector <int> G[N];
int spfa(int s)
{
queue <int> Q;
int inQ[N], g[N];
memset(inQ, 0, sizeof inQ);
memset(g, 0, sizeof g);
for (int i = 1; i <= n; ++i) d[i] = INF;
d[s] = 0, inQ[s] = 1, g[s] = 1;
Q.push(s);
while (!Q.empty()) {
int x = Q.front(); Q.pop();
inQ[x] = 0;
for (int i = 0; i < G[x].size(); ++i) {
int b = e[G[x][i]].v, c = e[G[x][i]].w;
if (d[b] > d[x] + c) {
d[b] = d[x] + c;
if (!inQ[b]) {
inQ[b] = 1;
g[b] ++;
Q.push(b);
if (g[b] >= n) return 1;
}
}
}
}
return 0;
}
void addEdge(int u, int v, int w)
{
e.push_back((edge){u, v, w});
G[u].push_back(e.size()-1);
}
int main()
{
scanf("%d", &T);
while (T--) {
scanf("%d%d", &n, &m);
e.clear();
for (int i = 0; i <= n; i++) G[i].clear();
for (int i = 0; i < m; i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
addEdge(a, b, c);
if (c >= 0) addEdge(b, a, c);
}
if (spfa(1)) printf("YES\n");
else printf("NO\n");
}
return 0;
}
【模板】负环(SPFA/Bellman-Ford)/洛谷P3385的更多相关文章
- 洛谷P3385 [模板]负环 [SPFA]
题目传送门 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个 ...
- LG P2285 [模板]负环(spfa判负环)
题目描述 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每 ...
- 【洛谷 P3385】模板-负环(图论--spfa)
题目:有一个图有N个顶点,M条边.边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向).共T组数据.对于每组数据,存在负环则输出一行"YE5 ...
- 洛谷 P3385 【模板】负环 (SPFA)
题意:有一个\(n\)个点的有向图,从\(1\)出发,问是否有负环. 题解:我们可以用SPFA来进行判断,在更新边的时候,同时更新路径的边数,因为假如有负环的话,SPFA这个过程一定会无限重复的遍历这 ...
- 洛谷P3385 【模板】负环(DFS求环)
洛谷题目传送门 HNOI爆零前回刷模板题 非常不正经的题目,目前并没有合适的优秀算法,就算是大家公认的dfs(还是不要强行叫dfs-spfa吧,概念应该不一样,这就是暴力dfs松弛答案) 但是对于随机 ...
- 【洛谷P3385】模板-负环
这道题普通的bfs spfa或者ballen ford会T 所以我们使用dfs spfa 原因在于,bfs sfpa中每个节点的入队次数不定,退出操作不及时,而dfs则不会 既然,我们需要找负环,那么 ...
- 洛谷—— P3385 【模板】负环
题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 ...
- 洛谷 P3385 【模板】负环
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M ...
- 洛谷 P3385 【模板】负环 题解
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...
随机推荐
- 2021.9.20考试总结[NOIP模拟57]
(换个编辑器代码就SB地不自动折叠了.. T1 2A 考察快读的写法. $code:$ T1 #include<bits/stdc++.h> #define scanf SCANF=sca ...
- matplotlib散点图
我们常用的统计图如下: 1.学会绘制散点图 一个小demo: 假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规 ...
- 第一个只出现一次字符的位置 牛客网 剑指Offer
第一个只出现一次字符的位置 牛客网 剑指Offer 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 ...
- 三、其他主机安装zabbix-agent加入到zabbix
一.yum (rpm)方式 1,下载安装对应的zabbix-agent的rpm包 rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/ ...
- 服务集与AP的配合
一.实验目的 1)掌握添加无线网络配置 2)掌握配置信道和协议使用并配置在一个天线上同时运行两个服务集,即两个无线网络 二.实验仪器设备及软件 仪器设备:一台AC,两台AP,一台AR,一台LSW 软件 ...
- laravel路由导出和参数加密
路由导出 代码位置:\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteListCommand.php protected ...
- Fiddler抓包工具简介:(一)认识Fiddler
认识Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据(指coo ...
- 终论到底该不该写isDebugEnabled
以前: 很多日志框架都不支持{}模板的写法(如Log4j1.X, Apache Commons Logging),于是只能通过字符串拼接来输出日志内容: log.debug("debug日志 ...
- 为什么建议使用你 LocalDateTime ,而不是 Date?
在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗 通过阅读本篇文章你将了解到: 为什么需要LocalDate.Loca ...
- Github webhooks 自动部署博客文章,使用总结【含视频】
作者:小傅哥 博客:https://bugstack.cn 原文:https://mp.weixin.qq.com/s/VtTHUfyiITNSoGy052jkXQ 沉淀.分享.成长,让自己和他人都能 ...