补全:INF 取多大才不溢出
这段 Bellman-Ford 用 int 存距离,INF 取了 INT_MAX。从走不到的点松弛出去时,INF + w 会溢出成负数(有符号溢出是未定义行为,本平台 g++ 实际会变成负数),把走不到的点也改成了负数。补全 INF 的取值,输出距离表(走不到的写 -1)。
(本题用 g++ -std=c++17 -O0 编译。)
这段 Bellman-Ford 用 int 存距离,INF 取了 INT_MAX。从走不到的点松弛出去时,INF + w 会溢出成负数(有符号溢出是未定义行为,本平台 g++ 实际会变成负数),把走不到的点也改成了负数。补全 INF 的取值,输出距离表(走不到的写 -1)。
(本题用 g++ -std=c++17 -O0 编译。)
全部评论