Tarjan算法

Tarjan算法是用与求强连通分量的一个算法

伪代码

标记数组Dfn[]:记录点的访问次序 标记数组Low[]:动态更新访问该点的最小次序

DFS(u){
       Dfn[u]=Low[u]=++num;//1.记录
       Stack[++t]=u;//2.入栈
       for(u能访问的每个点v){
         if(Dfn[v]==0)//没有访问过
            DFS(v);
            Low[u]=min(Low[u],Low[v]);//回溯更新
         else if(v在栈中)//说明第二次到同一个点 既已经出现环
                  Low[u]=Low[v]//动态更新
      }
      if(Dfn[u]==Low[u])//找到分量的根
      //进行输出
}

posted @ 2020-09-25 21:46  一个经常掉线的人  阅读(122)  评论(0)    收藏  举报