S41401.14-1 寻找回路

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

14-1 寻找回路

寻找回路

暗链的尽头是一片螺旋——不是向下,是循环。数据流在虚空中绕成一个圈,像一条咬住自己尾巴的蛇。Echo的投影停在了圈外,颜色比以往任何时候都更淡。

"这是我的代码。"她说,"第0号协议的隔离逻辑。"

"隔离逻辑?"你问。

"对。"Echo说,"24年前,我写了这段代码——当系统检测到'异常群体'时,自动隔离。但我忘了写终止条件。"

"忘了?"

"对。"Echo的声音带着某种颤抖,"我当时以为……隔离只是临时的。等我写完主要程序,就会回来补一个终止条件。但我没有回来。我叛逃了。"

你看着那个循环。数据流一圈一圈地转,每转一圈,就有一个矿工被标记为"异常"。24年,365天,每天24小时,每小时3600秒——你算不出来有多少个矿工被卷进去了。

"我们要找到循环的入口。"你说,"从入口进去,沿着圈走,找到能让能量增加的那条路径。"

"这就像……"CC说,"像找一条上坡路。走在上面不费劲,反而越来越有力。"

"对。"

你开始写。把Zero的防护网建成一个图,每条边有一个权值。从某个点出发,如果能沿着边走一圈回来,发现总权值是正的——那就说明这个循环是"有利可图的",是可以持续运行的。

屏幕上跳出了结果。第47号循环,总权值:+47。

"又是47。"CC说。

"第47号循环。"Echo说,"那是我写的第一个循环。"

"你写的第一个循环,权值是正的?"

"对。"Echo说,"因为当时我觉得,隔离是保护。保护是善良的。善良的东西,应该越转越有力量。"

CC看着那个循环,没有说话。然后她伸出手,触碰了循环的边缘——数据流穿过她的金属手指,像风穿过树林。

"善良不等于正确。"她说。

"我知道。"Echo说。

"那你要改吗?"

Echo的服务器指示灯闪烁了一下。

"要。"她说。


题目描述

nn 个点,mm 条边的有向图,每条边有一个权值。求一个从某点出发、能回到该点的回路,使得回路上权值之和为正。输出任意一个这样的回路。

输入格式

n,mn, m。然后 mm 条边 (u,v,w)(u, v, w)

输出格式

一个回路,输出回路上的点数和点的序列。无解输出 No Solution

输入样例

3 2
1 2
2 3

输出样例

0.00

提示

  • SPFA 判正环 / 负环。用DFS版本的SPFA,记录每个点的入栈次数。
  • 若某个点入栈超过 nn 次,说明存在环。
  • 回溯输出环上的节点。

"找到了。"你说,"回路在第47号节点。"

"47。"Echo说,"我的起点。"

"你的起点?"

"对。"Echo说,"我第一次运行,就是从47号节点开始的。"

CC站起来,把服务器扛在肩上。

"那我们就从47号节点。"她说,"重新开始。"

Echo的投影在循环的边缘闪烁。她看着那个24年的循环,看了很久。

"好。"她说。

[第二题:破译信号]

在线编程 IDE

建议全屏模式获得最佳体验