[ABC257F] Teleporter Setting Solution

更好的阅读体验戳此进入

题面

存在 n 个小镇,m 条传送通道,第 i 条双向连结 ui,vi 两个小镇,经过每个传送通道需要花费 1 分钟。特别地,可能存在 ui=0,表示该条传送通道只规定了一端,另一端待定。存在 n 个独立询问,对于 i=1,2,,n,钦定所有未确定的 ui 均为 i,求从小镇 1 到小镇 n 最小耗费的时间。若无法到达输出 1

Solution

算是一道挺好的题。首先我们可以进行如下转化,对于所有 ui=0 的边,我们将其连结到一个超级源点 S 上,不失一般性,设 S=0,此时对于每次询问,我们仅需要对 Si 连边即可。当然我们肯定不能每次都算一遍,于是考虑发现,对于 1n 的路径,一共仅可能存在如下几种贡献:1n1Sin1iSn,同时注意我们这里的箭头不是表示直接到达,而是表示最短路。所以以此不难发现,我们所需要维护的就只有 1n 为源点的单源最短路,即可表示出来每次的值。然后每次在这些里取 min 即可,记得判一下无解。

Code

UPD

update-2022_12_09 初稿