图的割边--仅仅与割点有一个等号的差别

Posted 断腿三郎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图的割边--仅仅与割点有一个等号的差别相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<cstdio>
using namespace std;
int u[1024],v[1024];
int first[1024],Next[1024];
int root,index=1,num[1024],low[1024];
bool book[1024];
int n,m;

void dfs(int cur,int father)
{
    low[cur]=num[cur]=index++;
    int k=first[cur];
    while(k!=-1){
        if(num[v[k]]==0){
            dfs(v[k],cur);
            low[cur]=min(low[v[k]],low[cur]);
            if(low[v[k]]>num[cur]){
                book[k]=1;
                cout<<u[k]<<"   "<<v[k]<<endl;
            }
        }
        else if(v[k]!=father){
            low[cur]=min(low[cur],num[v[k]]);
        }
        k=Next[k];
    }
}

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d",&u[i],&v[i]);
    }
    fill(first,first+n+1,-1);

    for(int i=1;i<=m;i++){
        u[i+m]=v[i];
        v[i+m]=u[i];
    }

    for(int i=1;i<=2*m;i++){
        Next[i]=first[u[i]];
        first[u[i]]=i;
    }

    root = 1;
    dfs(1,root);


}

   代码参考于《啊哈,算法》

以上是关于图的割边--仅仅与割点有一个等号的差别的主要内容,如果未能解决你的问题,请参考以下文章

图的割点与割边(超详细!!!)

『Tarjan算法 无向图的割点与割边』

Tarjan算法与割点割边

图的割点算法图的割边算法

Tarjan算法:求解图的割点与桥(割边)

图的割点桥与双连通分支