tarjan算法——割点

简述:从0号点开始,更新每个点能到达的最早时间戳,当 dfn[u]<=low[v] 时,u为割点

代码:

 1 ///根结点为割点的条件:孩子数大于1
 2 int vis[maxn],dfn[maxn],low[maxn];
 3 int n,m,a[maxn][maxn],lay,son[maxn];
 4 void tarjan(int u) {
 5     low[u]=dfn[u]=++lay;
 6     vis[u]=1;
 7     for(int v=0;v<n;v++)
 8         if(a[u][v]&&!vis[v]) {
 9             tarjan(v);
10             low[u]=min(low[u],low[v]);
11             if(dfn[u]<=low[v])
12                 son[u]++;
13         }
14         else if(a[u][v])low[u]=min(dfn[v],low[u]);
15 }
View Code
原文地址:https://www.cnblogs.com/wuliking/p/11561863.html