.article-info-tag,button{text-transform:uppercase}.day,.postMeta,.postSticky{position:relative}.postTitle a:link,html{-webkit-tap-highlight-color:transparent}#blog-calendar,.code-copay-btn,.code-hljs-len,.hidden{visibility:hidden}#EntryTag,#blogTitle h1{margin-top:20px}#EntryTag a,.postSticky{background:#6fa3ef}#blogTitle h1 a:hover,.dayTitle a,a,a:active,a:link,a:visited{color:#5c8ec6}#calendar table a:hover,#navList a:hover,.postDesc a:hover,a:active,a:hover,a:link,a:visited,button{text-decora…ryTag a:visited{color:#666}#BlogPostCategory a,#EntryTag a{height:20px;line-height:20px;color:#fff!important;padding:3px 5px;border-radius:3px;margin:2px 5px 0;text-decoration:none;font-size:14px}#BlogPostCategory a:hover,#EntryTag a:hover{transition:all .3s linear 0s;opacity:.8}#topics .postDesc{padding-left:0;width:100%;text-align:left;color:#666;margin-top:5px;background:0 0}.feedbackListSubtitle-louzhu:after,.feedbackListSubtitle:after,.feedbackListSubtitle:before{top:11px;right:100%;left:-1

P4374 [USACO18OPEN]Disruption P 题解~

\(\text{Description}\)

给定一颗有 \(n\) 个点的树,另给出 \(m\) 条有边权的边。求断掉一条边后能使原树联通的最小边权。

\(\text{Solution}\)

非常有意思的一道树剖题目,我们可以画图理解一下:

接着我们思考断掉一条边,寻找最小的能使图联通的边(这里建议手模一下),我们会发现:

只有当被断掉的边连接的两个点在额外边连接的两点的路径上(也就是形成环)时,这条额外边才有贡献

举个例子:当断掉 \(1-2\) 这条边时,为了保证 \(1-2\) 之间联通,我们可以选择边权为 \(3\) 的红边,而当断掉 \(1-3\) 之间的边时,我们可以选择边权为 \(3\) 的红边,也可以选择边权为 $5 $ 的红边(因为 \(1-3\) 之间的边和他们都形成了环),而当断掉 \(2-5\) 之间的边时,由于没有红边和他们形成环,所以就无解了。

所以这实际上就是一个树剖模板:区间修改求最小 + 区间查询最小值。

时间复杂度:\(\Theta(n\log^2n)\)(树剖复杂度)

代码在链接里。

posted @ 2021-04-08 19:39  feicheng  阅读(26)  评论(0编辑  收藏  举报