zoukankan      html  css  js  c++  java
  • UVA 315 :Network (无向图求割顶)

    题目链接

    题意:求所给无向图中一共有多少个割顶

    用的lrj训练指南P314的模板

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    
    const int N=109;
    struct Edge
    {
        int to,next;
        Edge(){}
        Edge(int _to,int _next)
        {
            to=_to;
            next=_next;
        }
    }edge[N*N*2];
    int head[N];
    
    int dfn[N],low[N];
    int iscut[N];
    int n,tot;
    int time_tag;
    
    void addedge(int u,int v)
    {
        edge[tot]=Edge(v,head[u]);
        head[u]=tot++;
    }
    
    void init()
    {
        memset(dfn,0,sizeof(dfn));
        memset(iscut,0,sizeof(iscut));
        memset(head,-1,sizeof(head));
        tot=time_tag=0;
    }
    
    void dfs(int u,int pre)
    {
        low[u]=dfn[u]=++time_tag;
        int child=0;    //子节点数目 
        for(int i=head[u];~i;i=edge[i].next)
        {
            int v=edge[i].to;
            if(!dfn[v])    //    把dfn[]当vis[]使用 
            {
                child++;
                dfs(v,u);
                low[u]=min(low[u],low[v]);
                if(low[v]>=dfn[u])
                    iscut[u]=1;
            }
            else if(dfn[v]<dfn[u] && v!=pre)
                low[u]=min(low[u],dfn[v]);
        }
        if(pre<0&&child==1) iscut[u]=0;    //只有一个孩子的根节点 
    }
    
    int main()
    {
        while(scanf("%d",&n)>0&&n)
        {
            init();
            int u,v;
            while(scanf("%d",&u)>0&&u)
            {
                while(getchar()!='
    ')
                {
                    scanf("%d",&v);
                    addedge(u,v);
                    addedge(v,u);
                }
            }
            dfs(1,-1);
            int ans=0;
            for(int i=1;i<=n;i++)
                if(iscut[i]) ans++;
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    宋宝华: 文件读写(BIO)波澜壮阔的一生【转】
    内核工具 – Sparse 简介【转】
    【java】JSON.toJSONString 空对象也可以转化为JSON字符串
    Seata分布式事务简单使用
    Mixin 工作原理
    公链
    公链
    公链
    公链
    公链
  • 原文地址:https://www.cnblogs.com/Just--Do--It/p/7569112.html
Copyright © 2011-2022 走看看