Article Index

CF1986F Non-academic Problem 做题笔记

Published on

题意

给定一个 $n$ 个点,$m$ 条边的连通无向图。您的任务是最小化此图中存在路径的顶点对 $1 \leq u < v \leq n$ 的数量。要实现此目标,您可以从图中移除一条边。

找到最小数量的顶点对!

$1 \leq n, m \leq 10^5$

题解

显然删除一个边双连通分量中的边没有任何用处。

于是先跑 Tarjan 缩边双连通分量,然后就会变成一棵树。

计算每个节点的子树大小,记为 $\mathsf{Size}_i$。

如果删除 $i$ 到 $i$ 父亲的边的话,此时树会被拆成两个连通块,大小分别为 $\mathsf{Size}_i$ 和 $n - \mathsf{Size}_i$,于是总的连通点对数量为

$$\mathsf{Size}_i\left(\mathsf{Size}_i - 1\right) + \left(n - \mathsf{Size}_i\right)\left(n - \mathsf{Size}_i - 1\right)$$

因此枚举每个点,求上式的最小值即可。

其实你可以在 Tarjan 过程中做上述过程,找到桥之后直接判两端大小算答案,这样代码会非常好写。


No comments

Post a comment