卧薪尝胆,厚积薄发。
wwt
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
ღゝ◡╹)ノ♡