#5971. 【模板】SPFA 判断负环

【模板】SPFA 判断负环

题目描述

给定一个 nn 个点的有向图,请求出图中是否存在从顶点 11 出发能到达的负环。

负环的定义是:一条边权之和为负数的回路。

输入格式

本题单测试点有多组测试数据。

输入的第一行是一个整数 TT,表示测试数据的组数。对于每组数据:

第一行有两个整数 n,mn,m,分别表示图的点数和接下来给出边信息的条数。

接下来 mm 行,每行三个整数 u,v,wu,v,w

  • w0w \ge 0,则表示存在一条从 uuvv、边权为 ww 的边,还存在一条从 vvuu、边权为 ww 的边;
  • w<0w < 0,则只表示存在一条从 uuvv、边权为 ww 的边。

输出格式

对于每组数据,输出一行一个字符串。若所求负环存在,则输出 YES,否则输出 NO

样例

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
NO
YES

数据范围与提示

  • 1n2×1031 \le n \le 2 \times 10^31m3×1031 \le m \le 3 \times 10^3
  • 1u,vn1 \le u,v \le n104w104-10^4 \le w \le 10^4
  • 1T101 \le T \le 10
  • 请注意,mm 不是图最终的边数。