最近很久没怎么写最短路的题导致这个题交了好多遍

AC率是怎么下来的自己心里没点数

SPFA虽然臭名昭著但是他可以用来判负环

如果一个点进队的次数大于等于n说明存在负环

这道题一开始memset我给dis赋了零

在SPFA厨师第一个点的时候根本就忘了还要初始化dis

菜死了

还有这题变态没让着输出YES或者NO

他让着输出YE5和N0......虽然我一眼就看出来了但是我还是把E写成了小写的....

Code:

  1. //SPFA判断负环
  2. #include <queue>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <iostream>
  6. using namespace std;
  7. const int N = ;
  8. int head[N << ], n, m, cnt, tim[N], T, dis[N];
  9. struct node {
  10. int nxt, to, w;
  11. }e[N << ];
  12. bool vis[N];
  13. int read() {
  14. int s = , w = ;
  15. char ch = getchar();
  16. while(!isdigit(ch)) {if(ch == '-') w = -; ch = getchar();}
  17. while(isdigit(ch)) {s = s * + ch - ''; ch = getchar();}
  18. return s * w;
  19. }
  20. void add(int x, int y, int z) {
  21. e[++cnt].nxt = head[x];
  22. e[cnt].to = y;
  23. e[cnt].w = z;
  24. head[x] = cnt;
  25. }
  26. bool spfa() {
  27. queue<int> q;
  28. q.push();
  29. vis[] = ;
  30. dis[] = ;
  31. while(!q.empty()) {
  32. int u = q.front();
  33. q.pop();
  34. vis[u] = ;
  35. for(int i = head[u]; i; i = e[i].nxt) {
  36. int v = e[i].to;
  37. if(dis[v] > dis[u] + e[i].w) {
  38. dis[v] = dis[u] + e[i].w;
  39. if(!vis[v]) {
  40. tim[v]++;
  41. q.push(v);
  42. vis[v] = ;
  43. if(tim[v] >= n) return ;
  44. }
  45. }
  46. }
  47. }
  48. return ;
  49. }
  50. int main() {
  51. T = read();
  52. while(T--) {
  53. memset(vis, , sizeof(vis));
  54. memset(head, , sizeof(head));
  55. memset(tim, , sizeof(tim));
  56. memset(dis, 0x3f3f3f3f, sizeof(dis));
  57. n = read(), m = read();
  58. for(int i = , x, y, z; i <= m; i++) {
  59. x = read(), y = read(), z = read();
  60. if(z < ) add(x, y, z);
  61. else add(x, y, z), add(y, x, z);
  62. }
  63. if(spfa()) printf("YE5\n");
  64. else printf("N0\n");
  65. }
  66. return ;
  67. }

洛谷p3385【模板】负环的更多相关文章

  1. 洛谷P3385 [模板]负环 [SPFA]

    题目传送门 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个 ...

  2. 洛谷P3385判负环——spfa

    题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...

  3. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  4. 洛谷P3385 【模板】负环(DFS求环)

    洛谷题目传送门 HNOI爆零前回刷模板题 非常不正经的题目,目前并没有合适的优秀算法,就算是大家公认的dfs(还是不要强行叫dfs-spfa吧,概念应该不一样,这就是暴力dfs松弛答案) 但是对于随机 ...

  5. 洛谷 P3385 【模板】负环

    P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M ...

  6. 洛谷 P3385 【模板】负环 题解

    P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...

  7. 洛谷—— P3385 【模板】负环

    题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 ...

  8. 题解【洛谷P3385】【模板】负环

    题目描述 暴力枚举/\(SPFA\)/\(Bellman-ford\)/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入输出格式 输入格式 第一行一个正整 ...

  9. 【模板】负环(SPFA/Bellman-Ford)/洛谷P3385

    题目链接 https://www.luogu.com.cn/problem/P3385 题目大意 给定一个 \(n\) 个点有向点权图,求是否存在从 \(1\) 点出发能到达的负环. 题目解析 \(S ...

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

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

随机推荐

  1. JMS简介与入门

    1:JMS引入 如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户需要查看信息的时候再去 ...

  2. Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局

    传统弹性伸缩的困境 弹性伸缩是 Kubernetes 中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划 ...

  3. Kubernetes 远程工具连接k8s集群

    Kubernetes 远程工具连接k8s集群 1.将Master的kubectl文件复制到Node内 scp k8s/kubernetes/server/bin/kubectl root@192.16 ...

  4. 【转载】百度百科:FusionCube超融合

    [转载]百度百科:FusionCube超融合 华为FusionCube融合基础设施一体机(Huawei FusionCube Converged Infrastructure)是华为公司IT产品线云计 ...

  5. CD 基金会、Jenkins、Jenkins X、Spinnaker 和 Tekton 的常问问题

    转载:https://mp.weixin.qq.com/s/bQLqGrCM9NZYI0Njlu4N-w FAQ 什么是持续交付(CD)? CD是一种软件工程方法,团队在短周期内生成软件,确保软件可以 ...

  6. 异步编程,await async入门

    网上很多异步编程的文章,提供一篇入门: 异步编程模型 .net支持3种异步编程模式: msdn:https://docs.microsoft.com/zh-cn/dotnet/standard/asy ...

  7. 如何通过 Freemark 优雅地生成那些花里胡哨的复杂样式 Excel 文件?

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  8. Python - 错误和异常 - 第十九天

    Python 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误和 ...

  9. css样式篇

    list-style list-style-type     设置列表项标记的类型 list-style-position  可设置outside(列表项目标记放置在文本以内,且环绕文本根据标记对齐) ...

  10. Java生鲜电商平台-系统报表设计与架构

    Java生鲜电商平台-系统报表设计与架构 说明:任何一个运行的平台都需要一个很清楚的报表来显示,那么作为Java开源生鲜电商平台而言,我们应该如何设计报表呢?或者说我们希望报表来看到什么数据呢?   ...