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

    模板题

    #include <iostream>
    #include <cstdio>
    using namespace std;
    struct Edge{
    	int too, nxt;
    }edge[200005];
    int n, m, dfn[100005], loo[100005], ind, uu, vv, cnt, hea[100005];
    bool isa[100005];
    void add_edge(int fro, int too){
    	edge[++cnt].nxt = hea[fro];
    	edge[cnt].too = too;
    	hea[fro] = cnt;
    }
    void tarjan(int u, int f){
    	dfn[u] = loo[u] = ++ind;
    	int cd=0;
    	for(int i=hea[u]; i; i=edge[i].nxt){
    		int t=edge[i].too;
    		if(!dfn[t]){
    			cd++;
    			tarjan(t, u);
    			loo[u] = min(loo[u], loo[t]);
    			if(f!=-233 && loo[t]>=dfn[u])	isa[u] = true;
    		}
    		loo[u] = min(loo[u], dfn[t]);
    	}
    	if(f<0 && cd>=2)	isa[u] = true;
    }	
    int main(){
    	cin>>n>>m;
    	for(int i=1; i<=m; i++){
    		scanf("%d %d", &uu, &vv);
    		add_edge(uu, vv);
    		add_edge(vv, uu);
    	}
    	for(int i=1; i<=n; i++)
    		if(!dfn[i])
    			tarjan(i, -233);
    	int ans=0;
    	for(int i=1; i<=n; i++)
    		if(isa[i])
    			ans++;
    	cout<<ans<<endl;
    	for(int i=1; i<=n; i++)
    		if(isa[i])
    			printf("%d ", i);
    	return 0;
    }
    
  • 相关阅读:
    Linux 文件特殊权限
    Linux ACL权限
    Linux 用户管理命令
    Asm.js: Javascript的编译目标
    《Zero to One》的一些读书笔记
    Tomcat架构(四)
    Tomcat架构(三)
    Tomcat架构(二)
    Tomcat 架构 (一)
    MATERIAL DESIGN学习笔记
  • 原文地址:https://www.cnblogs.com/poorpool/p/7976062.html
Copyright © 2011-2022 走看看