卧薪尝胆,厚积薄发。
wwt
Date: Fri Feb 15 11:52:36 CST 2019 In Category: NoCategory

Description1:

给出一个图,每次给出一个点集和一个边集,询问如果往图中再加入了边集里的边,那么点集的点是否点双连通。
$1\leqslant n\leqslant 10^5$

Solution1:

首先既然是点双联通,那么就容易想到建圆方树,为了让复杂度只与输入规模有关,我们可以把点集在圆方树上建虚树,但是由于在原图中在一个点双内的点在新图中是一个点双,因此我们可以枚举虚树上所有的方点,把在原图种和它距离为一并且也在虚树上的圆点连成一个环,然后在这个新图上跑 $tarjan$ 就做完了。

Code1:


没有代码

Description2:

给出一个图,每次给定 $S$ 和 $T$ 和一个边集,询问如果往图中再加入了边集里的边,从 $S$ 到 $T$ 的必经边数量。
$1\leqslant n\leqslant 10^5,1\leqslant m\leqslant 2\times 10^5$

Solution2:

先把边双连通分量缩点,然后树链剖分就可以快速查询两点之间必经边的数量,然后每次询问把边集端点, $S$ 和 $T$ 加进去跑虚树,然后可以再把虚树加上这次给出的边得到一个图,在这个图上再跑 $tarjan$ 得到必经边,那么如果这个边是边集里的边,贡献为 $1$ ,否则贡献为虚树这条边所代表的必经边的数量。

Code2:


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