割点、割边

来源:互联网 发布:国内人工智能高校排名 编辑:程序博客网 时间:2024/04/28 21:53

代码:

int Vcnt=0;int Ecnt=0;dfs(int u,int father,int depth) //u是当前结点,father父节点,depth记录dfs标号{    visit[u]=1; low[u]=dfn[u]=depth;    int child=0;//记录u的孩子数 for (int i=0;i<G[u].size();i++){      int v=G[u][i];if (visit[v]==1&&v!=father)low[u]=min(low[u],dep[v]);if (visit[v]==0)        {        child++;dfs(v,u,depth+1);low[u] = min(low[u], low[v]);                        if(u==root&&child>1||u!=root&&low[v]>=dfn[u])            {            cutpoint[u]=1;//是割点Vcnt++; }if (low[v] > dfn[u])            {            //<u,v>是割边;Ecnt++; }    }}visit[u]=2;}

原创粉丝点击