【未完工题解】P6880 [JOI 2020 Final] 奥运公交 / Olympic Bus

P6880】题解

一:【题意】

有向带权图,第 \(𝑖\) 条边权值为 \(C_i\) ,可以花 \(𝐷_i\) 代价翻转。
翻转 \(0\)\(1\) 条边,从 \(1\)\(n\) 再回到 \(1\) 的权值和最小是多少。

二:【解法】

先只考虑 \(1->n\) 的路径,然后 \(n->1\) 同理
\(1\)\(n\) 的最短路树,搜出最短路径 \(st\)
\(T1(x)\)\(1\)\(x\) 的最短路径长度, \(Tn(x)\)\(x\)\(n\) 的最短路径长度
如果改变的边不在 \(st\) 上,则最短路为 \(min(T1(n),T1(u)+w+Tn(v))\)
如果在 \(st\) 上,我们不知道是否存在长度 \(==T1(n)\) 的路径,所以不能取 \(min\) ,可以直接 \(Dijkstra\) 跑一遍

三:【代码】

(施工中)

posted @ 2026-01-09 10:40  Ming3398  阅读(7)  评论(0)    收藏  举报