tarjan求强连通分量专题

来源:互联网 发布:jary知而行之 编辑:程序博客网 时间:2024/05/16 15:57

定义:
对于有向图上的2个点a,b,若存在一条从a到b的路径,也存在一条从b到a的路径,那么称a,b是强连通的。
对于有向图上的一个子图,若子图内任意点对(a,b)都满足强连通,则称该子图为强连通子图。
非强连通图有向图的极大强连通子图,称为强连通分量。
单独的点也可以是强连通分量
学习博客:https://www.byvoid.com/zhs/blog/scc-tarjan

下面给几个例题
1.hihocoder 1185 || swjtu16年校赛G题
求有向图从点1开始走得到的最大点权和

代码:http://paste.ubuntu.com/24498782/

2.poj 2186 Popular Cows

题意:在有向图中找一些点能由其他所有点到达
思路:这些点肯定要满足出度为0,在同一个强连通分量里面,所有先用Tarjan缩点,然后统计出度为0的强连通分量个数,大于1就不满足条件。
(此题还用了个定理 :有向无环图(DAG)中,从任意一个点出发,必定可以到达某一个出度为0的点。)
所以等于1的时候统计这一个强连通分量里点的个数。

代码:http://paste.ubuntu.com/24502752/

0 0