前言
此文章纯娱乐,不喜勿喷。
此文章涉及到部分代码,建议先 AC\[NOI2018\] 归程后再看此文章。
众所周知,spfa 的死因是 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程一题里非常熟练地使用了一个广为人知的算法求最短路。
然后呢?
100→60;
Ag→Cu;
最终,他因此没能与理想的大学达成契约。
正文
这题的正解是 dijstkra,可以拿 100 分。代码:这里的 Code 1。
如果用正常的 spfa,那就会和那位同学一样,只拿 60 分。代码:这里的 Code 2。
为此,我加上了 SLF 优化,但也只拿了 60 分。代码:这里的 Code 3。
进一步,我又加上了 LLL 优化,但由于恶臭出题人数据强度较高,也只拿了 60 分。代码:这里的 Code 4。
最后,我搬出了容错 SLF 优化,终于 100 分。代码:这里的 Code 5。
后记
综上所述,我们可以得出结论:spfa 没有死,它又活了。
希望以后的出题人记住,如果能用 dijkstra,就一定要卡 spfa。
感谢 xhhkwy 大佬的这篇文章,文中提到的优化,都能在这里找到。
附上一张图片: