割点 模板

复制代码
#include<cstdio>
using namespace std;
const int maxn=200010;
int head[maxn],nxt[maxn],to[maxn],tt;
int low[maxn],dfn[maxn],index;
int n,m;
bool cut[maxn];
int min(int x,int y)
{
    return x>y?y:x;
}
void add(int u,int v)
{
    to[++tt]=v;
    nxt[tt]=head[u];
    head[u]=tt;
 }
void tarjan(int u,int fa)
{
    dfn[u]=low[u]=++index;
    int col=0;
    for(int i=head[u];i;i=nxt[i])
    {
        int v=to[i];
        if(!dfn[v])
        {
            tarjan(v,fa);
            low[u]=min(low[u],low[v]);
            if(low[v]>=dfn[u]&&u!=fa)
                cut[u]=1;
            if(u==fa) col++;
        }
        low[u]=min(low[u],dfn[v]);
    }
    if(col>=2&&u==fa) cut[u]=1;
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        add(x,y);add(y,x);
     }
    int ans=0;
    for(int i=1;i<=n;i++) if(dfn[i]==0) tarjan(i,i);
    for(int i=1;i<=n;i++) if(cut[i]) ans++;
    printf("%d\n",ans);
    for(int i=1;i<=n;i++) if(cut[i]) printf("%d ",i);
    return 0; 
 } 
复制代码

 

posted @   ZeroHzzzz  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示