图论复习——最短路

知识点

最短路径算法

最短路径树

每个点 u u u的父亲为使 u u u得到最短距离的前驱节点,若有多个,则取任意一个。

题目

CF449B Jzzhu and Cities

在这里插入图片描述
Blog

CF464E The Classic Problem

在这里插入图片描述
Blog

[XSY3888] 传送门

在这里插入图片描述
对每个点 u u u,记 d ( u ) d(u) d(u)表示 u u u T T T的最短路, e ( u ) e(u) e(u)表示删掉它和最短路上父亲的边后的最短路。令 d p ( u ) dp(u) dp(u)表示 S = u S=u S=u时的答案。每次找到 d p dp dp值最小的点来更新其它的点的 d p dp dp值即可。用 u u u更新 v v v时的转移为
d p ( v ) = m i n { m a x ( d p ( u ) + w ( u , v ) , u = = p a r e n t v ? e ( v ) : d ( v ) ) } dp(v)=min\{max(dp(u) + w(u, v), u==parent_v?e(v) : d(v))\} dp(v)=min{ max(dp(u)+w(u,v),u==parentv?e(v):d(v))}

e ( u ) e(u) e(u)的求法见[USACO09JAN]Safe Travel G
在这里插入图片描述
摘自此Blog
Code

传送门 Code

Guess you like

Origin blog.csdn.net/Emma2oo6/article/details/120874246