CF1081D(Avito Cool Challenge 2018 D)题解

Description

定义一条路径的长度为路径中所经过的边的最大边权。

给定一个 n n n个点, m m m条边的带权无向图,和 k k k个关键点,需要你求出对于每个关键点,离它最远的关键点离它有多远。注意,这里两个点之间的距离,指的是两个节点之间最短路的长度。

Solution

首先,我们跑出最小生成树。可以发现,对于任意两个节点的最短路径,一定只经过了树边。这可以通过反证法证明。

然后我们将这棵树的每条边给按照降序排序,考虑对于新加入的一条边所合并的两个连通块 x , y x, y x,y,若 x x x中关键点的数量为 1 1 1 y y y中有至少一个关键点,那么对于每一个 x x x中的关键点离它最远的关键点显然都在 y y y中,此时这个最长的最短路径就是新加入的这条边的边权。对于连通块 y y y同理。

时间复杂度 O ( ( m + n ) log ⁡ n ) O((m+n)\log n) O((m+n)logn)

之所以写这篇题解,是因为我不想打代码了,我想口胡了QAQ 以后再打吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值