tarjan算法求割点(java)
tarjan算法过程思路很简单,如果某个dfs树里的点,它的所有后代的回边都不能连到这个点或这个点的上面,那么它就是割点。所以用dfn记录dfs序,然后low记录后代中回边里最优秀(连的点最靠上)的那个回边所到达的点。所以一个点是割点当且仅当满足下面条件之一:(1) u为树根,且u有多于一个子树。(2) u不为树根,且满足存在(u,v)为树枝边(或称父子边,即u为v在搜索树中的父亲),使得dfn(u)<=low(v)。另一种想法也可以通过每个点必经点集的并集来确定割点,必经点集可以用逐
原创
2020-05-31 19:14:59 ·
511 阅读 ·
0 评论