题意
给定一棵带边权树,以及另外一些带边权的边,一个点(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})重构树解决。