gym102129F

题意

给定一棵带边权树,以及另外一些带边权的边,一个点(x)合法,当且仅当(forall y)(f(x,y)ge P(x,y)),其中(f(x,y))(x)(y)树上路径的最小值,(P(x,y))(x)(y)的任意路径的最小值。

做法

定义:令(E_0)为非树边集合。

引理1:一个点(x)合法,充要条件为:(forall (u,v,w)in E_0),满足(min{f(x,u),w}le f(x,v))(min{f(x,v),w}le f(x,u))

证明:
必要性显然。
考虑证明充分性,假设(x)不合法,一定存在路径(P=k_1,k_2,ldots,k_m),其中(k_1=x,k_{m-1}=u,k_{m}=v),满足(min{P}>f(x,v))
假设最小的(i< m-1),满足边((k_i,k_{i+1}))为非树边。
(f(k_i,k_{i+1})ge min{P}),替换会使(min{P})更大,依然满足条件。
(f(k_i,k_{i+1})<min{P})(min{P'=k_0,ldots,k_{i+1}}>f(x,k_{i+1}))
综上,一定可以将路径调整成仅有最后一条边为非树边。

(x)不合法的充要条件:(exists (u,v,w)in E_0),满足(min{f(x,u),w}>f(x,v))(min{f(x,v),w}>f(x,u)),即(w>min{f(x,u),f(x,v)})(f(x,u) eq f(x,v))

引理2:若(wle f(u,v)),对于(forall x),这条边均合法。

证明:
若最终(w>min{f(x,u),f(x,v)}),那么(f(x,u),f(x,v))存在一个(< f(u,v))
容易证明,树上路径((x,u),(x,v))除掉路径((u,v)),边集相同,则必定满足(f(x,u)=f(x,v))

现在仅需考虑(w>f(u,v))的这些边。那么可以将第一个条件去掉,仅需考虑哪些(x),满足(f(x,u) eq f(x,v))

引理2证明,若(f(x,u),f(x,v))存在一个(< f(u,v))上,两种显然相等。
那么有(f(x,u)=f(u,v))(f(x,v)>f(u,v)),或,(f(x,u)>f(u,v))(f(x,v)=f(u,v))
考虑加入树上边权(>f(u,v))的边,(u,v)所在连通块内的点(x)符合这个条件。

( ext{Kruskal})重构树解决。

原文地址:https://www.cnblogs.com/Grice/p/14789995.html