洛谷P3385负环
传送门
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define re register
using namespace std;
const int maxn = 2005;
const int maxm = 3005;
inline int read(){
char ch = getchar();
int f = 1 , x = 0 ;
while(ch > '9' || ch < '0') {if(ch == '-' ) f = -1 ; ch = getchar();}
while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0' ;ch = getchar();}
return x * f;
}
int T,n,m,u,v,w;
int head[maxn],tot;
bool flag;
struct Edge{
int from , to , next , val;
}edge[maxm << 1];
inline void add(int u , int v , int w){
edge[++tot].from = u ;
edge[tot].to = v;
edge[tot].val = w;
edge[tot].next = head[u];
head[u] = tot;
}
int dis[maxn],num[maxn];
bool vis[maxn];
inline bool spfa(int s){
for(re int i = 1 ; i <= n ; ++i) dis[i] = 1e9 ;
queue<int> q;
q.push(s);
dis[s] = 0;
num[s]++;
vis[s] = true;
while(!q.empty()){
int cur = q.front();
q.pop(); vis[cur] = 0;
for(re int i = head[cur] ; i ; i = edge[i].next) {
int v = edge[i].to ;
if(dis[v] > dis[cur] + edge[i].val) {
dis[v] = dis[cur] + edge[i].val;
if(!vis[v]) {
q.push(v);
num[v]++;
vis[v] = true;
if(num[v] > n) return false;
}
}
}
}
return true;
}
int main(){
T = read();
while(T--){
memset(dis , 0 , sizeof(dis));
memset(edge , 0 ,sizeof(edge));
memset(num , 0 , sizeof(num));
memset(head , 0 , sizeof(head));
memset(vis , 0 , sizeof(vis));
tot = 0;
flag = 0;
n = read(); m = read();
for(re int i = 1 ; i <= m ; ++i){
u = read(); v = read(); w = read();
if(w < 0) add(u , v , w);
else {
add(u , v , w);
add(v , u , w);
}
}
if(spfa(1)) printf("N0\n");
else printf("YE5\n");
}
return 0;
}
洛谷P3385负环的更多相关文章
- ACM - 图论 - P3385 负环
P3385 负环 题目描述 给定一个 \(n\) 个点的有向图,请求出图中是否存在从顶点 \(1\) 出发能到达的负环. 负环的定义是:一条边权之和为负数的回路. 输入格式 本题单测试点有多组测试数据 ...
- 洛谷P3385 【模板】负环(DFS求环)
洛谷题目传送门 HNOI爆零前回刷模板题 非常不正经的题目,目前并没有合适的优秀算法,就算是大家公认的dfs(还是不要强行叫dfs-spfa吧,概念应该不一样,这就是暴力dfs松弛答案) 但是对于随机 ...
- 洛谷P3385 [模板]负环 [SPFA]
题目传送门 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个 ...
- 洛谷P3385判负环——spfa
题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...
- 洛谷 P3385 【模板】负环
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M ...
- 洛谷 P3385 【模板】负环 题解
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...
- 【模板】负环(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则不会 既然,我们需要找负环,那么 ...
- 【洛谷 P3385】模板-负环(图论--spfa)
题目:有一个图有N个顶点,M条边.边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向).共T组数据.对于每组数据,存在负环则输出一行"YE5 ...
随机推荐
- Android实现透明的颜色效果(zz)
android Button或者ImageButton背景透明状态设置 设置Button或ImageButton的背景为透明或者半透明 半透明< Button android:backgroun ...
- 使用VS2012调试Dump文件
前一节我讲了怎么设置C++崩溃时生成Dump文件 , 点击 传送门 , 这一节我讲讲怎么使用 VS2012 调试生成的 Dump 文件 , 甚至可以精确到出错的那一行代码上面 ; 1. 生成 Dump ...
- Unity ZTest深度测试 & ZWrite深度写入
Shader深度渲染队列Queue预定义值:Background(1000).Geometry(2000).AlphaTest(2450).Transparent(3000).Overlay(4000 ...
- jQuery速看
本文参考w3school网站. jQuery是一个十分流行的javascript库. 基础语法是:$(selector).action() $:表示使用的语法为jquery selector:选择器 ...
- Django中@login_required用法简介
我们在网站开发过程中,经常会遇到这样的需求: 用户登陆系统才可以访问某些页面 如果用户没有登陆而直接访问就会跳转到登陆界面,而不能访问其他页面. 用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访 ...
- 使用uwsgi配置django
1.uwsgi的安装 pip install uwsgi 2.uwsgi的基本测试: 创建一个test.py文件,内容如下: def application(env, start_response): ...
- Nginx+Tomcat+Memcache实现负载均衡及Session共享
第一部分 环境介绍 部署环境: Host1:Nginx.Memcached.Tomcat1 Host2:Tomcat2 Tomcat_version:8.0.38 第二部分 Nginx+Tomcat实 ...
- WAV MP3 Converter-强大的音频转换软件-特别版
From:http://www.cnblogs.com/killerlegend/p/3873909.html Author:KillerLegend Date:2014.7.28 WAV MP3 C ...
- 1130 N的阶乘的长度 V2(斯特林近似)
1130 N的阶乘的长度 V2(斯特林近似) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 输入N求N的阶乘的10进制表示的长度.例如6! = 720, ...
- MVC: Connection String
背景: 之前项目使用的是DB first/Model first,现在要对EF升级的6.0,并且更换成Code first. 问题: 1. System.Data.Entity.Core.Metada ...