社区讨论
关于次短路(二次发问)
学术版参与者 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 条回复,欢迎继续交流。
正在加载回复...