次短路只跑一遍 dij 的做法复杂度是否正确
查看原帖
次短路只跑一遍 dij 的做法复杂度是否正确
128570
StarLbright40XLapp楼主2022/6/29 12:06
  1. 普通 dij 如果不加类似if(now.dis>dis[now.u]) continue;这样的语句,复杂度就会假;

  2. 这题题解区,好几篇只跑一遍 dij(与“正反各跑一遍最短路再枚举边”的做法区别)的题解都没有上面那样的语句,应该是复杂度不对珂以被卡;

  3. 和同学讨论了下,初步得出如下结论:应该写成if(now.dis>dis[now.u][1]) continue;(dis 数组第二维 0/1 表示最短/次短路),写成 0 会失去正确性,但仍不知道这样写复杂度是否正确。

请问是否有能够同时保证正确性和复杂度的写法?

另外从题解和讨论区珂以看出此题数据较水,所以不能以 AC 本题作为代码正确性或复杂度正确的依据。

2022/6/29 12:06
加载中...