bellman-ford判断负环
前置芝士:bellman-ford
板子:https://www.luogu.com.cn/problem/P3385
大家应该都会SPFA判负环了,但代码量实在是大的惊人。
那有没有相对方便的做法呢?有,SPFA的祖宗的原版bellmanford
那有同学就要问了:
bellman-ford稳定relax
A:把所有边再relax一遍,如果relax成功就有负环
核心代码:
for(int i = 1;i < n;++i)
for(int j = 1;j <= cnt;++j)
if(dis[edge[j].v] > dis[edge[j].u] + edge[j].w)
dis[edge[j].v] = dis[edge[j].u] + edge[j].w;
for(int i = 1;i <= cnt;++i)
if(dis[edge[i].u] > inf || dis[edge[i].v] > inf) continue; //源点到不了,有负环也没用
else if(dis[edge[i].v] > dis[edge[i].u] + edge[i].w) {cout << "YES" << endl;f = 1;break;}
if(!f) cout << "NO" << endl;
即 bellman-ford 板子 + m次relax,总复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具