概念
Tarjan是在有向图中找环的算法。
模板及模拟过程
实现
记录到达每个点的时间t和每个点往前能走到的t最小的点的t。这个最小的t就是环里的代表元素。
具体实现用栈。
方法是dfs。
应用
1、求环的数量
codevs 2822 爱在心中 的第一问:求大于1的强连通分量的数量
codevs 1332 上白泽慧音
输出最大的环
2、缩点
codevs 2822 爱在心中 的第二问
缩点后找出度为0的环
codevs 2341 受欢迎的牛
缩点后求出度为0的强连通分量的大小。
注意题目中的隐含条件:如果存在多个出度为0的环,则输出0.
洛谷 2656 采蘑菇
缩点重构图后用spfa求最长路。
codevs 2604 舞会邀请
Tarjan缩点后求入度为0的环/点的数量。