标签:lse ++ amp oid 强连通 联通 整理 无向图 node
int tot,low[N],dfn[N],scc[N],sccno;
int st[N],top,vis[N];
void tarjan(int u){
int v;
low[u]=dfn[u]=++tot;
st[top++]=u;
vis[u]=1;
for(node *p=h[u];p;p=p->nxt)
if(!dfn[v=p->v]){
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(vis[v]==1) low[u]=min(low[u],dfn[v]);
if(low[u]==dfn[u]){
++sccno;
while(1){
v=st[--top];
scc[v]=sccno;
vis[v]=2;
if(v==u) break;
}
}
}
int rt,tot,dfn[N],low[N],cut[N],vis[N];
void tarjan(int u){
int v,t=0;
low[u]=dfn[u]=++tot;
vis[u]=1;
for(node *p=h[u];p;p=p->nxt)
if(!dfn[v=p->v]){
tarjan(v);
if(low[v]>=dfn[u]) t++,cut[u]=1;
low[u]=min(low[u],low[v]);
}
else if(vis[v]==1) low[u]=min(low[u],dfn[v]);
if(u==rt && t<2) cut[rt]=0;
vis[u]=2;
}
标签:lse ++ amp oid 强连通 联通 整理 无向图 node
原文地址:https://www.cnblogs.com/lindalee/p/11866208.html