社区讨论

关于次短路(二次发问)

学术版参与者 3已保存回复 15

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
15 条
当前快照
1 份
快照标识符
@lo1xt2za
此快照首次捕获于
2023/10/23 04:44
2 年前
此快照最后确认于
2023/11/03 05:10
2 年前
查看原帖
这里面应该提到两种方法(劳驾各位巨佬自己点进去看,谢谢啦),但是本蒟蒻还是有问题想问。
对于删边和开两个数组,它们不应该 都可以 求得 严格次短路非严格次短路 吗?

比如删边。在删掉每一条边会得到一个 假定的次短路,这时我们看是不是和 最短路 相等不就可以判断是不是 严格次短路 吗?

然后对于开两个数组。
CPP
分情况讨论新得到的路径长度:
1.小于当前最短路
2.等于当前最短路
3.大于当前最短路且小于当前次短路
4.大于等于次短路
并对 dis[i][0/1]dis[i][0/1] 的值进行替换
这里应该很显然可以看出稍微更改一下条件就能改变是否是 严格 次短路吧?
小于当前最短路就更新最短路并把曾经的最短路给次短路,等于当前最短路就不考虑,第三种情况就更新次短路,第四种情况就都不更新。
这样子是不是也能变成 严格 次短路?

我想表达的是,这两种方法好像都能够求得 严格非严格 的次短路吧?但是在 P1491 集合位置 这一题中有 一篇讨论。这里的 lz 使用两种方案 只有一种方案通过并且疑似另一种方案无法通过,也就是说这两个方法应该是有本质上的区别的,请问一下区别是什么 QWQ。
谢谢各位啦。QAQ

回复

15 条回复,欢迎继续交流。

正在加载回复...