• lightoj1063【求割点】


    题意不懂啊。。。。。。

    只知道求割点。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    typedef pair<int,int>PII;
    const double eps=1e-5;
    const double pi=acos(-1.0);
    const int mod=1e9+7;
    const int INF=0x3f3f3f3f;
    
    const int N=1e4+10;
    const int M=2e4+10;
    
    struct Edge{
        int to;
        int next;
    };
    Edge q[M*2];
    int head[M*2],tol,n,m;
    int dfn[N],low[N];
    int ind,top;
    bool flag[N],vis[N];
    
    void Tarjan(int u,int pre)
    {
        int v;
        int son=0;
        low[u]=dfn[u]=ind++;
        vis[u]=true;
        for(int i=head[u];i!=-1;i=q[i].next)
        {
            v=q[i].to;
            if(v==pre)
                continue;
            if(!dfn[v])
            {
                son++;
                Tarjan(v,u);
                low[u]=min(low[v],low[u]);
                if(u!=pre&&low[v]>=dfn[u])
                    flag[u]=true;
            }
            else
                low[u]=min(low[u],dfn[v]);
        }
        if(pre==u&&son>1)
            flag[u]=true;
    }
    
    void init()
    {
        tol=0;
        memset(head,-1,sizeof(head));
    }
    
    void add(int u,int v)
    {
        q[tol].to=v;
        q[tol].next=head[u];
        head[u]=tol++;
    }
    
    int main()
    {
        int T,cas=1;
    //freopen("D:\in.txt","r",stdin);
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
            init();
            while(m--)
            {
                int u,v;
                scanf("%d%d",&u,&v);
                add(u,v);
                add(v,u);
            }
            memset(dfn,0,sizeof(dfn));
            memset(low,0,sizeof(low));
            memset(flag,0,sizeof(flag));
            memset(vis,0,sizeof(vis));
            ind=1;
            int ans=0;
            Tarjan(1,1);
            for(int i=1;i<=n;i++)
                if(flag[i])
                {
                  //  printf("%d
    ",i);
                    ans++;
                }
            printf("Case %d: %d
    ",cas++,ans);
        }
        return 0;
    }
    
    


  • 相关阅读:
    矩阵旋转
    clang-format 规范及 Visual Stido Code 自定义格式化代码风格
    Windows 安装 MinGW-w64
    Linux配置Visual Stdio Code
    Ubuntu中安装eclipse
    Ubuntu安装JDK11
    Ubuntu安装搜狗输入法
    C/C++算术运算(类型使用)的注意事项
    闰年判断与日期计算
    查看变量类型
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777507.html
Copyright © 2020-2023  润新知