zoukankan      html  css  js  c++  java
  • 求割顶模版

    割顶:去掉该点后图的连通分量数目增加,则称该点为割顶,下图中D和E是割顶

     
    struct node{
    	int from,to,nex;
    }edge[2*M];
    int head[N],edgenum;
    void addedge(int u,int v){
    	node E={u,v,head[u]};
    	edge[edgenum]=E;
    	head[u]=edgenum++;
    }
    int pre[N],low[N],dfs_clock;
    bool iscut[N];
    int dfs(int u,int fa){//是连通图,dfs(u, )目的是寻找u的后代所能连回的(最早的祖先)的pre值
    	int lowu=pre[u]= ++ dfs_clock;
    	int child=0;
    	for(int i=head[u];i!=-1;i=edge[i].nex){
    		int v=edge[i].to;
    		if(!pre[v]){
    			child++;
    			int lowv=dfs(v,u);
    			lowu = Min(lowu, lowv);
    			if(lowv >= pre[u])iscut[u]=true;
    		}
    		else if(pre[v] < pre[u] && v!=fa)
    			lowu = Min(lowu, pre[v]);
    	}
    	if(fa==-1 && child==1)iscut[u]=0;//判断树根是不是割点
    	return low[u]=lowu;
    }
    void findcut(){
    	memset(pre,0,sizeof(pre));
    	memset(iscut,0,sizeof(iscut));
    	dfs_clock=0;
    	dfs(1,-1);//dfs(树根,树根的父亲是-1) 
    }


     

  • 相关阅读:
    南阳779
    南阳599
    南阳484
    margin叠加相邻两个元素的上下margin是叠加在一起
    margin
    padding
    css05 字体以及行间距
    mysql相似于oracle的to_char() to_date()方法
    sqlite两表更新update
    SQL查找重复项目
  • 原文地址:https://www.cnblogs.com/pangblog/p/3320072.html
Copyright © 2011-2022 走看看