洛谷—— P3385 【模板】负环
2017-05-20 18:03
471 查看
https://www.luogu.org/problem/show?pid=3385#sub
题目描述
暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索
输入输出格式
输入格式:
第一行一个正整数T表示数据组数,对于每组数据:
第一行两个正整数N M,表示图有N个顶点,M条边
接下来M行,每行三个整数a b w,表示a->b有一条权值为w的边(若w<0则为单向,否则双向)
输出格式:
共T行。对于每组数据,存在负环则输出一行"YE5"(不含引号),否则输出一行"N0"(不含引号)。
输入输出样例
输入样例#1:2 3 4 1 2 2 1 3 4 2 3 1 3 1 -3 3 3 1 2 3 2 3 4 3 1 -8输出样例#1:
N0 YE5
说明
N,M,|w|≤200 000;1≤a,b≤N;T≤10 建议复制输出格式中的字符串。
此题普通Bellman-Ford或BFS-SPFA会TLE
不能用百分数,就用电风扇~~~
#include <algorithm> #include <cstring> #include <cstdio> #include <queue> using namespace std; const int N(200000+5); int t,n,m,u,v,w; int sumedge,head ; struct Edge { int to,next,cost; Edge(int to=0,int next=0,int cost=0): to(to),next(next),cost(cost) {} }edge[N<<1]; void ins(int from,int to,int cost) { /*++sumedge; edge[sumedge].to=to; edge[sumedge].next=head[from]; edge[sumedge].cost=cost;*/ edge[++sumedge]=Edge(to,head[from],cost); head[from]=sumedge; } int dis ,vis ,if_; void SPFA(int now) { vis[now]=1; for(int i=head[now];i;i=edge[i].next) { int go=edge[i].to; if(dis[go]>dis[now]+edge[i].cost) { if(vis[go]||if_) { if_=1; break; } dis[go]=dis[now]+edge[i].cost; SPFA(go); } } vis[now]=0; } void init() { memset(dis,0,sizeof(dis)); memset(vis,0,sizeof(vis)); memset(head,0,sizeof(head)); if_=sumedge=0; } int main() { scanf("%d",&t); for(;t;t--) { scanf("%d%d",&n,&m); init(); for(int i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w); ins(u,v,w); if(w>=0) ins(v,u,w); } for(int i=1;i<=n;i++) { SPFA(i); if(if_) break; } if(if_) printf("YE5\n"); else printf("N0\n"); } return 0; }
相关文章推荐
- POJ3259 Wormholes 洛谷P3385 【模板】负环
- SPFA基础模板 (洛谷1339 [USACO09OCT]热浪Heat Wave)
- 洛谷P3796 【模板】AC自动机(加强版)
- (洛谷 最小费用最大流 模板)
- 洛谷P3373 [ 模板] 线段树 (乘法和加法)
- 洛谷 P 3379 【模板】最近公共祖先(LCA)
- 洛谷P3386 【模板】二分图匹配
- 洛谷P3368 【模板】树状数组 2
- 关于 线段树 下传(AC) 不做标记 下传(T3)模板洛谷p3372
- 【洛谷1593】【模板】template负环 递归SPFA判负环
- 洛谷 3391 文艺平衡树 splay模板
- 洛谷 [模板]并查集
- AC自动机模板【洛谷3796】
- 洛谷 [模板]最小生成树
- P3385 【模板】负环
- 【模板】【Treap/SBT】【树堆】普通平衡树【洛谷P3369】
- 洛谷 P3806 【模板】点分治1
- 洛谷 2068 线段树模板:单点更新,区间求和
- 扩展欧几里得模板(洛谷1082 同余方程NOIP 2012 提高组 第二天 第一题)
- 洛谷P3369 【模板】普通平衡树(Treap/SBT)