摘要: 初识tarjan算法,还要从一道算法考试题说起,当时没有听过这个算法,当然是铩羽而归 我理解的tarjan算法: 基础为dfs的思想,从根节点(可以是任意一个点)开始,递归的每个点,都按照访问顺序赋予编号,我们用dfn[]数组表示, 同时我们记录这些点的深度,用low[]数组表示 在dfn探索的过程 阅读全文
posted @ 2020-10-22 09:26 BryantKun 阅读(80) 评论(0) 推荐(0)
摘要: 求双连通图,需要使用缩点,缩点的意思就是将图中的环都缩为一个点,给这些点进行编号,最终必然形成一个树。 那么很容易推论出,至少要加的边数num=(leaf+1)/2; leaf即:所有度为1的点的个数(度大于1的点必为根节点) 代码如下: package com.Vjudge;import java 阅读全文
posted @ 2020-10-22 09:07 BryantKun 阅读(103) 评论(0) 推荐(0)
摘要: //此题是未使用tarjan算法的递归实现,主要原因为,当某一条边属于两个环时,普通tarjan算法结果不对。 // 当然此题已有限制,边最多只属于一个环。import java.io.BufferedReader;import java.io.InputStreamReader;import ja 阅读全文
posted @ 2020-10-22 09:02 BryantKun 阅读(414) 评论(0) 推荐(0)