Loading

LG2685 TJOI2012 桥(最短路,set / multiset)

LG2685 TJOI2012 桥

求每条边删去以后 \(s\)\(t\) 的最短路。

CODE

拎出一条 \(s\)\(t\) 的最短路 \(p\)

对每个点 \(u\),求出 \(s \to u\)\(s \to t\) 最短路的最后一个共同点 \(L_u\),以及 \(t \to u\)\(t \to s\) 的最后一个共同点 \(R_u\)

\(L, R\) 可以在最短路数上依次以 \(p\) 中的点为起点 bfs 求出。

然后对于一条不在 \(p\) 的边,\([L_u, R_v)\) 之间的边对应的集合中加入 \(f(s \to u) + w + f(v \to t)\)

求出每个集合的最小值可以扫描线。

然后最后 \(d\) 就是删除 \(p\) 中每条边的最大值。

如果 \(d\) 等于原来的最短路,答案是 \(m\)(这里错了好多发),否则是等于 \(d\) 的集合最小值个数。

posted @ 2022-09-08 19:25  Pizza1123  阅读(35)  评论(0)    收藏  举报