tarjan求强连通分量专题

定义:
对于有向图上的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/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值