无向图的一些概念:
割点:一个连通图G,如果删除某个点后使得图G分成若干个部分,那么这个点就是割点,一个连通图中可以存在多个割点亦可以没有割点
块:块经常和割点一起出现在题目中,块是图G的一个没有割点的的连通子图
割边:一个连通图中,若删掉一条边后图G就不在是连通图,那么这条边就是割边
缩点:就是将没有割边的连通子图看成一个点,这个连通子图中的任意两点满足可达
点双连通:若图中的点割集的度大于1,那么这个图是点双连通的
边双连通:若图中的边割集的度大于1,那么这个图是边双连通的
不管是点双连通还是边双连通都统成为双连通
双连通分量:若图G‘是G的子图,G’是双连通的,且G‘不是任何双连通图的真子集,那么G’就是该图的极大双连通子图,这个极大双连通子图就是双连通分支,特殊的无向图点的双连通分支叫做块
求割点的算法:
采用tarjan的算法思想:从根节点开始搜索,每个节点有个最早的访问时间dfn[i]和该节点和它的子树节点能够更新到达的最早访问时间如图(1,2),(2,3)(3,1),假设我们的访问顺序为1--2--3,dfn[1]=1,dfn[2]=2,dfn[3]=3,因为节点3和节点1连接,那么节点3能够更新到比他更早被访问的节点1,那么low[3]=1,这样low[2]=1; 当low[v]>=dfn[u](v的u的子节点)时表示点u为一个割点,因为low[v]>=dfn[u]时表示u的子节点v没有其他路径到达比u更早的节点,也就是说节点u将他们断开了!! 这里判断一个点是否为割点时,当这个点为根节点时不能够用low[v]>=dfn[u]判断,因为