P9659 [ICPC 2021 Macao R] Shortest Path Fast Algorithm

题目描述

最近,宝宝学习了最短路径快速算法(SPFA,或更正式地说,贝尔曼-福特-摩尔算法)以有效地解决最短路径问题。他意识到,如果用优先队列代替先进先出队列,该算法看起来与 Dijkstra 算法非常相似,并向你展示了下面的伪代码。 ![](https://cdn.luogu.com.cn/upload/image_hosting/yunmac9g.png) 选择 $Q$ 中最佳顶点意味着选择具有最小优先级值的顶点(如果有多个顶点具有最小优先级值,则选择其中索引最大的顶点)。 作为未来的计算机科学家,你发现宝宝修改后的 SPFA 算法在某些精心构造的图中运行速度非常慢。然而,宝宝确信他的算法很好,除非你向他展示一个简单的无向图,在该图中,SPFA 函数中的变量 $\tt{cnt}$ 在某个时刻不少于某个 $k$。为方便起见,SPFA 函数的源顶点被指定为顶点 $1$。 就给他个教训吧!

输入格式

输出格式

说明/提示

为方便起见,你可以从比赛网站上复制与给定伪代码对应的 $\tt{C++}$ 代码。将代码保存为 $\tt{spfa.cpp}$,使用 $\text{g++ spfa.cpp -O2 -o spfa}$ 进行编译,你将得到一个名为 $\tt{spfa}$ 的可执行文件。运行 $\tt{spfa}$,将你的输出提供给它的标准输入,它将打印出 $\tt{cnt}$ 的 $\textbf{最终}$ 值。给出示例输出后,它将打印出 $4$,这意味着示例输出不足以通过秘密测试用例。 注意,给定的代码不会检查你的输出的有效性(例如,它不会检查你的输出是否真的是一个简单图)。即使可执行文件打印出一个很大的值,如果你的输出无效,你仍然可能失败测试。 翻译来自于:[ChatGPT](https://chatgpt.com/)。