关于割点的定义,见http://www.byvoid.com/blog/biconnect/ 我觉得这个大牛写的挺好的。
通俗来说,割点就是在一个无向图中,去掉这个点以及与它关联的边,原来连通的图变为了若干不连通的块的一个点。求割点常见的算法就是DFS,在DFS时记录每个节点的深度dep和它的子孙所能达到的最浅深度low。然后对于每一个节点:
1) 如果u该点是根节点并且有两个或者两个以上儿子,那么u是一个割点
2) 如果u不是根节点并且存在它的一个儿子v,使得low[v] >= dep[u],那么u是割点
伪代码如下:
求无向图割点的题有很多。这里列出TOJ 1026,TOJ2189,TOJ2299
TOJ1026 http://acm.tju.edu.cn/toj/showp1026.html
TOJ2189 http://acm.tju.edu.cn/toj/showp2189.html
TOJ2299 http://acm.tju.edu.cn/toj/showp2299.html