无向图的连通性相关
作者:互联网
无向图的割点和桥
\(\\\)
概念
对于\(x\epsilon V\),从图中删去节点\(x\)以及所有与\(x\)关联的边后,\(G\)分裂成两个或两个以上不相连的子图,则称\(x\)为\(G\)的割点。
若对于\(e\epsilon E\),从图中删去边\(e\)之后,\(G\)分裂成两个不相连的子图,则称\(e\)为\(G\)的桥或割边。
一般无向图(不一定联通)的“割点”和“桥”就是它的各个连通块的“割点”和“桥”。
\(\\\)
tarjan算法
以\(O(v+e)\)的时间复杂度求出无向图的割点和桥以及双连通分量。
割边判定法则
无向边\((x,y)\)是桥,当且仅当搜索树上存在\(x\)的一个子节点\(y\),满足\(dfn[x]<low[y]\)。
割点判定法则
若\(x\)不是搜索树的根节点,则\(x\)是割点当且仅当搜索树上存在\(x\)的一个子节点\(y\)满足\(dfn[x]\le low[y]\)
若\(x\)是搜索树的根节点,则存在至少两个子节点\(y_1,y_2\)满足上述条件。
\(\\\)
一些题目
矿场搭建
通过手模一些样例可以发现,实际上就是求出割点后对于不同的连通块分类讨论。
记当前连通块内的点的个数为\(n\)。
-
如果这个连通块不与任何割点相连,那么这个连通块内需要两个出口
首先可以钦定块内的任何一点作为出口,考虑该出口没了的情况,那么还需要另外一个点作为出口。
这种情况下可以作为出口的点有\(C_n^2=\frac{n\times (n-1)}{2}\)种情况。
-
如果这个连通块与一个割点相连,那么这个连通块内需要单独的一个出口。
如果这个割点没了,那么这个连通块内的点没有其他点与块外的点相连。
这种情况下可以作为出口的点有\(n\)种情况。
-
如果这个连通块与两个及以上割点相连,那么这个连通块不需要出口
如果其中一个割点没了,还可以通过其它的割点与块外的点相连。
对答案没有贡献。
\(\\\)
[ZJOI2004]嗅探器
一个结论,如果存在这样一个点,那么这个点一定是割点,并且两个中心服务器位于与这个割点相连的不同两个连通块中。
没调过……
\(\\\)
\(\\\)
无向图的双连通分量
\(\\\)
概念
若一张连通图不存在割点,则称它为“点双连通图”。
若一张连通图不存在割边,则称它为“边双连通图”。
点双连通分量(v-DCC)是指这张无向连通图中不存在包含它且比它更大的点双连通子图。
边双连通分量(e-DCC)是指这张无向连通图中不存在包含它且比它更大的边双连通子图。
\(\\\)
Tarjan算法
点双连通分量判定法则
- 图的顶点数量不超过\(2\)。
- 图中任意两点都同时包含在至少一个简单环中。
满足两个条件的其中一个即可。
边双连通分量判定法则
图中任意一条边都包含在至少一个简单环中。
\(\\\)
一些题目
Network
首先求出原图中所有的边双连通分量,然后对于所有的边双连通分量缩点,建出新的缩点图。
此时缩点图中所有的边就是原图所有的桥边。
后面所有的加边操作都在缩点图上进行。
如果这条边的两个端点在一个v-dcc里,那么这条边既不会增加桥边,又不会减少桥边,可以忽略。
这条边最多只会与v-dcc里的边形成简单环,然而v-dcc里面的边已经不是桥边了,故它自己不会成为桥边,也不会减少桥边。
如果这条边的两个端点在两个v-dcc里,那么缩点图上两个端点之间的边都不再是桥边。
这条边会与两个端点之间的边形成简单环,那么这些边就都不是桥边了。
此时,并不需要实际把这条边建出来。
考虑如果需要把这条边建出来的话,一定是这条边在之后可能形成桥边,或者是让之后加的边成为桥边。首先,这条边已经与两个端点之间的路径形成了一个简单环,它自己永远不可能成为桥边了。同理,之后添加的边也一定会与它两个端点之间的路径形成简单环,也不可能成为桥边。
将两个端点之间的路径看成这两个端点到\(lca\)的路径拼起来。也就是说,预先处理出\(lca\),将\(x\)到\(lca\)路径上所有的桥边都改为非桥边,将\(y\)到\(lca\)路径上所有的桥边也都改为非桥边。
code
\(\\\)
Knights of the Round Table
咕咕咕
标签:连通,连通性,割点,无向,桥边,端点,两个,相关,分量 来源: https://www.cnblogs.com/Rapunzel/p/15394844.html