zoukankan      html  css  js  c++  java
  • hdu 4587 TWO NODES 关节点

    //题目大意:对于一个无向图,求删除两个点后能形成的最大连通分量个数。
    //先枚举每一个点,删除后形成图G,在G上进行tarjan求割点,找出最大值即可。
    #include <cstdio>
    #include <vector>
    #include <string.h>
    using namespace std;
    #define maxn 5020
    vector <int> g[maxn];
    int pre[maxn],low[maxn],iscut[maxn];
    int n,m;
    int dfs_clock;
    int del;
    int min(int a,int b)
    {
        if(a<b) return a;
        else return b;
    }
    
    int max(int a,int b)
    {
        if(a>b) return a;
        else return b;
    }
    int dfs(int u,int fa)
    {
        int lowu=pre[u]=++dfs_clock;
        int i;
        for(i=0;i<g[u].size();i++)
        {
            int v=g[u][i];
            if(v==del) continue;
            if(!pre[v])
            {
                int lowv=dfs(v,u);
                lowu=min(lowu,lowv);
                if(lowv>=pre[u]) iscut[u]++;
            }
            else if(pre[v]<pre[u]&&v!=fa)
                lowu=min(lowu,pre[v]);
        }
        if(fa<0) iscut[u]--;
        low[u]=lowu;
        return lowu;
    }
    
    int main()
    {
        int sum=0;
        int x,y;
        int i,j,k;
        int ans;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(k=0;k<n;k++) g[k].clear();
            ans=0;    
            for(i=0;i<m;i++)
            {
                scanf("%d%d",&x,&y);
                g[x].push_back(y);
                g[y].push_back(x);
            }
            for(i=0;i<n;i++)
            {
                del=i;
                dfs_clock=0;
                memset(pre,0,sizeof(pre));
                memset(iscut,0,sizeof(iscut));
                sum=0;
                for(j=0;j<n;j++)
                {
                    if(j==del) continue;
                    if(pre[j]==0)
                    {
                        dfs(j,-1);
                        sum++;
                    }
                }
                for(j=0;j<n;j++)
                {
                    if(j==del) continue;
                    ans=max(ans,sum+iscut[j]);
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    
    
    
    
    
     
  • 相关阅读:
    [蓝桥杯2019初赛]
    HDU2054
    HDU1175
    POJ3259
    数据结构
    欢迎来测!!!
    jsp页面el取不到值,java片断可以取到
    HTML中table边框的显示总结转载▼
    jquery插件图片延时加载实例详解(转)
    引用CDN内容的方法总结(转)
  • 原文地址:https://www.cnblogs.com/vermouth/p/3710187.html
Copyright © 2011-2022 走看看