连通性学习笔记

无向图的缩点:1,求无割边子图     方法:求low[]及dfn[]后floodfill     题目:POJ3177 3352
                   2,求无割点子图(即子块,重连通分量)    方法:用栈实现,见下    题目:POJ2942
有向图的缩点: 1,求强连通分量     方法:Kosaraju & Tarjan    题目:POJ1236 2553

注意到一个点可以同时存在两个块中,但是一个点不可能同时存在两个没有割边的子图中,所以,求没有割边的子图可以大胆的floodfill,而求子块却不可以,因为floodfill是针对点的操作。floodfill后生成的树的树边必为割边。
求子块可以在DFS的同时用栈储存同一子块内的所有边:每遇到一条未访问过的边都将其压栈,在遇到割点的时候将栈内的边退栈,直至当前边也被弹出,这些边及其关联的顶点组成一个子块。

另外偷偷转一下PKKJ兄关于缩点的总结:http://hi.baidu.com/novosbirsk/blog/item/48573e80b202a3d09123d909.html

上面说的基本是链接的COPY版本……惭愧

posted @ 2009-01-21 23:01  Beetlebum  阅读(411)  评论(0编辑  收藏  举报