!一个简单的问题
  • 板块学术版
  • 楼主E_huanJX泛舟客
  • 当前回复19
  • 已保存回复19
  • 发布时间2022/11/6 22:20
  • 上次更新2023/10/27 03:59:02
查看原帖
!一个简单的问题
546246
E_huanJX泛舟客楼主2022/11/6 22:20

我今天写一题用到了 spfa 判断负环,突然疑惑了(挺离谱)。

常见的 spfa 判环似乎有两种写法,一种是记录环长,更新的时候(边 u->v )cnt[v]=cnt[u]+1,看会不会超过 n,原理就是如果没有环不可能有最短路径长度超过 n。

第二种就是记录每个点入队次数(叫 cnt[i]吧),我一直写的是“存在 cnt[i]>n”就算有负环,感觉可以理解成每个点最多把这个点更新一次,但我想想又觉得不对,一个点也可以更新多次吧?判 cnt[i]>m 肯定是可以的,因为每条边最多对一个点影响一次,但是判断n可以吗?我以前一直这样写好像还没 WA 过,但今天想一下感觉必须和 m 比较才对呢?

想问一下大佬们,第二种写法是“只有判 m 才对,数据很难卡满所以判 n 通常能过”还是“判 n 就够了”呢?如果是后者可以解释一下吗?

碎碎念:不知道是今天降智了还是咋的呢,被 spfa 困惑呜呜。

2022/11/6 22:20
加载中...