luogu

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
inline void in(int &p,char c=getchar(),bool f=0)
{
while((c<'0' or c>'9') and c!='-')
c=getchar();
p=0;
if(c=='-')
f=1,c=getchar();
while(c>='0' and c<='9')
p=(p<<3)+(p<<1)+c-'0',c=getchar();
if(f)
p=-p;
}
int n,m;
struct way
{
int to;
int cost;
};
vector <way> v[200001];
bool fuhuan,vis[200001];
long long dis[200001];
void spfa_dfs(int x)
{
vis[x]=1;
for(unsigned int i=0;i<v[x].size();i++)
{
if(dis[x]+v[x][i].cost<dis[v[x][i].to])
{
dis[v[x][i].to]=dis[x]+v[x][i].cost;
if(vis[v[x][i].to])
{
fuhuan=1;
//vis[x]=0;
return ;
}
spfa_dfs(v[x][i].to);
}
}
vis[x]=0;
}
int main()
{
//freopen("shuru.txt","r",stdin);
int t;
in(t);
while(t--)
{
in(n);in(m);
for(int i=1;i<=n;i++)
v[i].clear();
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
fuhuan=0;
for(int i=0;i<m;i++)
{
int x,y,c;
in(x);in(y);in(c);
way a;
a=(way){y,c};
v[x].push_back(a);
if(c>=0)
{
a.to=x;
v[y].push_back(a);
}
}
for(int i=1;i<=n;i++)
if(!fuhuan)
spfa_dfs(i);
if(fuhuan)
printf("YE5\n");
else
printf("N0\n");
}
return 0;
}

spfa_dfs找负环的更多相关文章

  1. SPFA找负环(DFS) luogu3385

    SPFA找负环的基本思路就是如果一个点被访问两次说明成环,如果第二次访问时所用路径比第一次短说明可以通过一直跑这个圈将权值减为负无穷,存在负环 有bfs和dfs两种写法,看了一些博客,在bfs和dfs ...

  2. 【洛谷 P3385】模板-负环(图论--spfa)

    题目:有一个图有N个顶点,M条边.边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向).共T组数据.对于每组数据,存在负环则输出一行"YE5 ...

  3. 【洛谷P3385】模板-负环

    这道题普通的bfs spfa或者ballen ford会T 所以我们使用dfs spfa 原因在于,bfs sfpa中每个节点的入队次数不定,退出操作不及时,而dfs则不会 既然,我们需要找负环,那么 ...

  4. POJ-2175 Evacuation Plan 最小费用流、负环判定

    题意:给定一个最小费用流的模型,根据给定的数据判定是否为最优解,如果不为最优解则给出一个比给定更优的解即可.不需要得出最优解. 解法:由给定的数据能够得出一个残图,且这个图满足了最大流的性质,判定一个 ...

  5. POJ 2175 Evacuation Plan (费用流,负环,消圈法,SPFA)

    http://poj.org/problem?id=2175 Evacuation Plan Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  6. bzoj3597[Scoi2014]方伯伯运椰子 01分数规划+spfa判负环

    3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 594  Solved: 360[Submit][Statu ...

  7. SPFA - Luogu 3385 【模板】负环

    [模板]负环 描述 找负环 输入 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每行三个整数a b w,表示a->b有一条权值为w ...

  8. [luoguP1993] 小 K 的农场(差分约束 + spfa 判断负环)

    传送门 差分约束系统..找负环用spfa就行 ——代码 #include <cstdio> #include <cstring> #include <iostream&g ...

  9. luogu P1768 天路 |01分数规划+负环

    题目描述 言归正传,小X的梦中,他在西藏开了一家大型旅游公司,现在,他要为西藏的各个景点设计一组铁路线.但是,小X发现,来旅游的游客都很挑剔,他们乘火车在各个景点间游览,景点的趣味当然是不用说啦,关键 ...

随机推荐

  1. 暑假练习赛 007 C - OCR

    C - OCR Description standard input/outputStatements Optical Character Recognition (OCR) is one of th ...

  2. CentOs6.8 hadoop集群搭建过程中的问题

    1.Error: Java heap space 网上有很多说是java虚拟机内存不够的,我也试着修改内存大小,但是没起作用,后来发现是文件在传输过程中失真.文件在上传到HDFS后变成乱码,重新上传文 ...

  3. display、visibility、visible区别

    标签的隐藏可以有三种:display.visibility.服务器控件的visible. 显然,这三者都能起到隐藏与显示的效果,但是用途确完全不一样,请看用法与区别: <div style=&q ...

  4. Github从注册到上传本地项目详解!!!

    由于本人对于git并不是很熟悉,所以能从一个初学者或者说是未知者的角度去给大家解释每一步的操作. 另外如果本文不够详细的话,请参考 廖雪峰git教程  偷偷有码git从入门到上传本地项目 那么开始! ...

  5. C#三大方法:虚方法、静态方法、实例方法

    虚方法:使用virtual关键字定义,当子类继承父类时,可以对父类中的虚方法进行重写. 如下面代码中的类B,它继承类A,类A实现了接口I(实现了接口中的foo()方法).在类A中使用virtual将f ...

  6. 通讯框架 T-io 学习——给初学者的Demo:ShowCase设计分析

    前言 最近闲暇时间研究Springboot,正好需要用到即时通讯部分了,虽然springboot 有websocket,但是我还是看中了 t-io框架.看了部分源代码和示例,先把helloworld敲 ...

  7. Grafana+Prometheus系统监控之钉钉报警功能

    介绍 钉钉,阿里巴巴出品,专为中国企业打造的免费智能移动办公平台,含PC版,Web版和手机版.智能办公电话,消息已读未读,DING消息任务管理,让沟通更高效:移动办公考勤,签到,审批,企业邮箱,企业网 ...

  8. Mybatis按顺序获取数据

    sql语句select * from producttg where hospitalcode in (1,2,3)  获取到的数据并不是按照条件1,2,3的顺序排列,如果要成下面形式(mybatis ...

  9. C#的Main(String[] args)参数输入问题

    1.新建一个控制台应用程序,保存在桌面上,Main函数如下所示 using System;using System.Collections.Generic;using System.Linq;usin ...

  10. [转载] redis-cluster研究和使用

    转载自http://hot66hot.iteye.com/blog/2050676 最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 release ...