zoukankan      html  css  js  c++  java
  • 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;
    }
    
    


  • 相关阅读:
    Android集成科大讯飞SDK语音听写及语音合成功能实现
    Android开发中一些常见的问题解决方案
    Android混淆配置文件规范
    android第三方分享之友盟社会化组件
    android一些常用的代码2(收藏)
    svn
    ubuntu 解决中文zip乱码问题
    android优秀Github源码整理
    linux清理内存
    cocos2d-x图层相关 锚点
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777507.html
Copyright © 2011-2022 走看看