卧薪尝胆,厚积薄发。
Date: Thu Feb 14 15:36:38 CST 2019 In Category: NoCategory

Description:

给出一张无向图,每次删掉一个点,求图中边双连通的点对个数。
$1\leqslant n\leqslant 10^6$

Solution:

边双联通有一个特别好的点双联通不具有的性质是他可以代表等价关系,也就是说 $a$ 和 $b$ 边双联通, $b$ 和 $c$ 也是,那 $a$ 和 $c$ 也边双联通,因此边双联通分量就可以用并查集维护而点双联通分量不可以,对于这道题,先时光倒流转化为加点,然后对于每个联通块维护一棵生成树,然后可以发现任何一个边双联通分量在这棵树上也是一个联通块,这棵树可以启发式合并维护,然后每次加一个点可以看成是加入所有和他相连的边,每加入一条边时如果他两边已经联通了,那么这两个点在树上的路径上的这些点就都边双联通了,因此要把他们全都用并查集合起来,但是由于有些已经连起来了,为了保证复杂度,就可以用并查集跳过大段的已经连起来的部分,也就是说每个点连向它的父亲,然后找祖先就找到了联通块最上面的点,于是复杂度就对了。

Code:


没有代码
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡