主要思路
考虑三种最短路的形式:\(A \times dist, \lfloor \frac{dist}{2} \rfloor B + (dist \bmod 2) A, kB \)。前两种直接 BFS 一遍即可,第三种对路径有特殊要求:不能存在边集外一条边可以使得与路径的某两条边形成三元环。
说到三元环,我们就可以仿照那个根号的方法,先做标记,然后再枚举中间边。然而,这里我们没法拆成单向边,所以直接根号的做法是假的。
继续思考一个三元环 \((u, v, w)\),发现如果我们找到了一个这样的三元环,至少我们可以直接删掉 \((v, w)\),因为这个边不会再发挥作用了(因为我们在 BFS 的时候肯定提供最优解)。
Continue reading →