模板—tarjan求割边

int dfn[MAXN],low[MAXN],cnt;
void tarjan(int x,int edg)
{
    low[x]=dfn[x]=++cnt;
    for(int i=f(x);i;i=n(i))
    if(!dfn[v(i)])
    {
        tarjan(v(i),i);
        low[x]=min(low[x],low[v(i)]);
        if(low[v(i)]>dfn[x])
            isbridge[i]=isbridge[i^1]=1;
    }
    else if(i!=(edg^1))
        low[x]=min(low[x],dfn(v(i)));
}
原文地址:https://www.cnblogs.com/Al-Ca/p/11181056.html