zoukankan      html  css  js  c++  java
  • luogu_3388 【模板】割点(割顶)

    #include <bits/stdc++.h>
    using namespace std;
    const int N=100010;
    int n,m,sum,dfs_clock;
    vector<int> G[N];
    int pre[N],low[N],iscut[N];
    
    int dfs(int u,int fa){
    	int lowu=pre[u]=++dfs_clock;
    	int child=0;
    	for(int i=0;i<G[u].size();i++){
    		int v=G[u][i];
    		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(child==1 && fa<0)iscut[u]=0;
    	low[u]=lowu;
    	return lowu;
    }
    
    int main(){
    	scanf("%d%d",&n,&m);
    	while(m--){
    		int u,v;
    		scanf("%d%d",&u,&v);
    		G[u].push_back(v); G[v].push_back(u);
    	}
    	for(int i=1;i<=n;i++)
    		if(!pre[i])dfs(i,-1);
    	for(int i=1;i<=n;i++)if(iscut[i])sum++;
    	printf("%d
    ",sum);
    	for(int i=1;i<=n;i++)
    		if(iscut[i])printf("%d ",i);
    	puts("");
    	return 0;
    }
    

      

  • 相关阅读:
    hdu 5116 计数
    hdu 5117 数学公式展开 + dp
    hdu 5115 Dire Wolf 区间dp
    I00025 寻找循环数
    外部设备发展趋势
    外部设备发展趋势
    互联网
    互联网
    I00024 出钱买羽
    I00024 出钱买羽
  • 原文地址:https://www.cnblogs.com/codetogether/p/7603584.html
Copyright © 2011-2022 走看看