Tarjan-强连通分量
这是一个漫(jian)长(nan)的过程 请大家耐心读完,相信你一定能学会 首先来介绍一下强连通分量 神奇海螺指引你: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。——百度百科 Tarjan是基于迪法师(DFS)的一种算法,可以说是一种流(du)批(liu)的操作,本蒟蒻苦哈哈的学了好几天才学会强连通分量和缩点; 在这里推荐给大家几道题: 受欢迎的牛 , 消息扩散 ; 这些题我会在后期的博客中进行详细的讲解 步入正轨: 图中{6}是第一个被发现的强连通分量,其次是{5},最后被发现的是{3,4,1,2} (顺序无所谓) Tarjan算法是解决强连通分量和缩点问题的一种比较常见的方法 接下来开始🔛一步一步的 首先给你一个图(求其中的强连通分量)(注:以下图片摘自: ~~ ) 在这里我们假设从点1开始遍历,并且将访问的点压入栈中 在进行操作之前,我们要明确Tarjan中的两个至关重要的数组:DFN和LOW; DFN[x]:表示这个点x几次被遍历到; LOW[x]