馬上就退役了,時間不足就不多介紹了

反正DFS是會T飛的,BFS就沒關係了qwq

#include<cmath>
#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
#define rg register
#ifdef _WIN32
#define lld "I64d"
#else
#define lld "%lld"
#endif
using namespace std;
inline long long read(){
long long a=0; int f=0; char c=getchar();
while(c<'0'||c>'9') { f|=c=='-'; c=getchar(); }
while(c>='0'&&c<='9') { a=(a<<3)+(a<<1)+(c^48); c=getchar(); }
return f? -a:a;
}
int t,n,m,fir[2002],dis[2002],cnt,q[6000006],head,tail,num[2002];
bool vis[2002],flag;
struct edge{int v,w,nxt;} e[6006];
void add(int x,int y,int z){
e[++cnt].v=y,e[cnt].w=z,e[cnt].nxt=fir[x],fir[x]=cnt;
}
bool spfa(){
while(head<tail){
int u=q[++head]; vis[u]=0;
if(num[u]>n) return 1;
for(int i=fir[u],v;v=e[i].v,i;i=e[i].nxt){
if(dis[v]>dis[u]+e[i].w){
dis[v]=dis[u]+e[i].w,num[v]=num[u]+1;
if(num[v]>n) return 1;
if(!vis[v]) vis[v]=1,q[++tail]=v;
}
}
}
return 0;
}
int main(){
// freopen("testdata.in","r",stdin);
// freopen("qaq.txt","w",stdout);
t=read();
while(t--){
n=read(),m=read();
for(int i=1;i<=n;++i) dis[i]=214748364,q[i]=0,vis[i]=0,fir[i]=0;
cnt=0,q[1]=1,head=0,tail=1,num[1]=vis[1]=1,dis[1]=0;
for(int i=1,x,y,z;i<=m;++i){
x=read(),y=read(),z=read(),add(x,y,z);
if(z>=0) add(y,x,z);
}
if(spfa()) printf("YE5\n");
else printf("N0\n");
}
return 0;
}

  

SPFA判負環的更多相关文章

  1. dfs找負環

    某些無良出題人可能會卡bfs找負環,所以要用dfs 核心代碼(以jzoj5173為例): #include<bits/stdc++.h> using namespace std; #def ...

  2. POJ 3259 Wormholes(SPFA判负环)

    题目链接:http://poj.org/problem?id=3259 题目大意是给你n个点,m条双向边,w条负权单向边.问你是否有负环(虫洞). 这个就是spfa判负环的模版题,中间的cnt数组就是 ...

  3. Poj 3259 Wormholes(spfa判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42366 Accepted: 15560 传送门 Descr ...

  4. poj1860(spfa判正环)

    题目连接:http://poj.org/problem?id=1860 题意:有多种从a到b的汇率,在你汇钱的过程中还需要支付手续费,那么你所得的钱是 money=(nowmoney-手续费)*rat ...

  5. spfa判负环

    bfs版spfa void spfa(){ queue<int> q; ;i<=n;i++) dis[i]=inf; q.push();dis[]=;vis[]=; while(!q ...

  6. poj 1364 King(线性差分约束+超级源点+spfa判负环)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14791   Accepted: 5226 Description ...

  7. 2018.09.24 bzoj1486: [HNOI2009]最小圈(01分数规划+spfa判负环)

    传送门 答案只保留了6位小数WA了两次233. 这就是一个简单的01分数规划. 直接二分答案,根据图中有没有负环存在进行调整. 注意二分边界. 另外dfs版spfa判负环真心快很多. 代码: #inc ...

  8. 2018.09.12 poj3621Sightseeing Cows(01分数规划+spfa判环)

    传送门 01分数规划板题啊. 发现就是一个最优比率环. 这个直接二分+spfa判负环就行了. 代码: #include<iostream> #include<cstdio> # ...

  9. 2018.09.09 poj2949Word Rings(01分数规划+spfa判环)

    传送门 这题要先巧妙的转化一下. 对于每个字符串,我们把头尾的两个小字符串对应的点连边,边权是这个字符串的长度. 这样最多会出现26*26个点. 这个时候就只用求出边权和跟边数的最大比值了. 这个显然 ...

随机推荐

  1. 【转】Odoo:基本字段类型

    class Stage(models.Model): _name = 'todo.task.stage' _order = 'sequence,name' # String fields: name ...

  2. OSG-获取OSG的源代码和第三方库并编译

    获取OSG的源代码有很多方式. 这里说下其中的两个地方,第一就是中国的OSG网站http://www.osgchina.org/,这个网站目前应该是由中国西安恒歌科技维护,同时,西安恒歌科技也是一家已 ...

  3. debian8+lnmp1.2一键安装+WordPress3.9

    下载并安装LNMP一键安装包 wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-ful ...

  4. 那些年我们不爱学的mysql单词

    MySQL 一种关系型数据库 database 数据库,简称DB databases 数据库的复数,代表多个数据库 net 网络/服务 start 启动 stop 停止 root MySQL数据库中的 ...

  5. 题解 CF191C 【Fools and Roads】

    树上差分半裸题 常规思路是进行三次DFS,然后常规运算即可 这里提供两次dfs的思路(wyz tql orz) 我们以样例2为例 我们考虑任意一条路径,令其起点为u终点为v,每走一次当前路径则v的访问 ...

  6. Window下部署MySql数据库

    官网下载地址:https://dev.mysql.com/downloads/mysql/,MySQL Community(社区版) Server 5.7.21,下载完毕后,解压文件. (1)在mys ...

  7. python图片大小处理;

    循环一个目录将下面的所有png或者jpg文件全部缩小一定比例:     from PIL import Image import os,re work_dir = 'C:\\Users\\Admini ...

  8. Memcache的客户端连接系列(四) PHP

    关键词: Memcached   PHP 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. PHP客户端 Re ...

  9. kaldi - Online Audio Server(服务器客户端建立方法-旧版在线解码)

    目录 一.服务器客户端识别系统建立方法 1. Command line to start the server(服务器端启动方式): 2. Command line to start the clie ...

  10. wf效能分析

    听从了老师的建议我请教了其他的同学,修改了代码实现了功能四,以下是我的效能测试: 1.采用ptime.exe测试的3次截图 可以看到的是三次执行时间分别为:1.449秒:0.915秒:0.871秒,取 ...