beet's soil

競プロのことなど

AOJ 2872 Ebi-chan Lengthens Shortest Paths

双対パンチ👊

グラフの辺を伸ばすので、これは双対ゲーです。

双対についてはこちら↓
beet-aizu.hatenablog.com


元のs-t最短路の長さを len とし、 辺 ebe だけ伸ばすことにすると、
minb,pecebe
s.t.
pvpuwe+be
ptpslen+1
となります

最小費用流の双対の形になるように変形すると(目的関数を-1倍していることに注意)
maxb,pecebe×bts
s.t.
be+pvpuwe
bts+pspt(len+1)
となります

あとは負辺ありの最小循環費用流を流して終わりです。
辺は u-> v に流量 cuv、コスト duv を、
t-> s に流量 、コスト (len+1) を貼ればいいです。