思路:

每次枚举删除一个点,然后对剩下的点求出关键点,判断删除哪个关键点获得的连通分支数最大。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#define Maxn 5100
#define Maxm 50100
#define inf 0x7fffffff
using namespace std;
map<int,int> p[Maxn];
int Index[Maxn],dfn[Maxn],low[Maxn],vi[Maxn],compent[Maxn],e,n,lab,Max=;
struct Edge{
int from,to,next;
}edge[Maxm];
inline int min(int a,int b)
{
return a<b?a:b;
}
inline int max(int a,int b)
{
return a>b?a:b;
}
void init()
{
memset(Index,-,sizeof(Index));
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vi,,sizeof(vi));
memset(compent,,sizeof(compent));
for(int i=;i<=n;i++)
p[i].clear();
e=lab=Max=;
}
void Init()
{
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vi,,sizeof(vi));
memset(compent,,sizeof(compent));
lab=Max=;
}
void addedge(int from,int to)
{
edge[e].from=from;
edge[e].to=to;
edge[e].next=Index[from];
Index[from]=e++;
}
void dfs(int u,int farther)
{
dfn[u]=low[u]=++lab;
int i,temp;
for(i=Index[u];i!=-;i=edge[i].next)
{
temp=edge[i].to;
if(!vi[temp])
{
if(!dfn[temp])
{
dfs(temp,u);
if(low[temp]>=dfn[u])
{
compent[u]++;
//cout<<u<<" * "<<compent[u]<<" "<<low[temp]<<" "<<temp<<endl;
Max=max(Max,compent[u]);
}
low[u]=min(low[u],low[temp]);
}
if(temp!=farther)
low[u]=min(low[u],dfn[temp]);
}
}
}
int main()
{
int i,j,m,a,b;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
for(i=;i<=m;i++)
{
scanf("%d%d",&a,&b);
a++;
b++;
if(!p[a][b])
{
addedge(a,b);
addedge(b,a);
p[a][b]=p[b][a];
}
}
int num=;
int v;
int ans=;
int flag=;
for(i=;i<=n;i++)
{
Init();
vi[i]=;
num=;
flag=;
for(j=;j<=n;j++)
{
if(!vi[j]&&!dfn[j])
{
compent[j]=-;
dfn[j]=low[j]=++lab;
num++; for(int k=Index[j];k!=-;k=edge[k].next)
{
v=edge[k].to;
if(!dfn[v]&&!vi[v])
{
flag=;
compent[j]++;
Max=max(Max,compent[j]);
dfs(v,j);
}
}
}
}
if(flag)
num--;
vi[i]=;
ans=max(ans,num+Max);
//cout<<num<<" "<<Max<<endl;
}
printf("%d\n",ans);
}
return ;
}

2013 南京理工大学邀请赛B题的更多相关文章

  1. HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)

    Walk Through Squares Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Oth ...

  2. HDU 4751 Divide Groups (2013南京网络赛1004题,判断二分图)

    Divide Groups Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  3. HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)

    Count The Pairs Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others ...

  4. HDU4565 && 2013年长沙邀请赛A题

    部分转自http://blog.csdn.net/crazy______/article/details/9021169 #include<cstdio> using namespace ...

  5. 2013长沙网络赛H题Hypersphere (蛋疼的题目 神似邀请赛A题)

    Hypersphere Time Limit: 1 Second       Memory Limit: 32768 KB In the world of k-dimension, there's a ...

  6. 2013年山东省赛F题 Mountain Subsequences

    2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从 ...

  7. 2013年省赛H题

    2013年省赛H题你不能每次都快速幂算A^x,优化就是预处理,把10^9预处理成10^5和10^4.想法真的是非常巧妙啊N=100000构造两个数组,f1[N],间隔为Af2[1e4]间隔为A^N,中 ...

  8. 2013年省赛I题 Thrall’s Dream

    2013年省赛I题判断单向联通,用bfs剪枝:从小到大跑,如果遇到之前跑过的点(也就是编号小于当前点的点),就o(n)传递关系. bfs #include<iostream> #inclu ...

  9. 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)

    2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...

随机推荐

  1. java多线程中的volatile和synchronized

    package com.chzhao; public class Volatiletest extends Thread { private static int count = 0; public ...

  2. 生成Base58格式的UUID(Hibernate Base64格式的UUID续)

    Base58简介 Base58采用的字符集合为“123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ”,从这不难看出,Base58是纯数 ...

  3. codeforces 622A Infinite Sequence

    A. Infinite Sequence time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. HDU 2063 过山车(二分匹配入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配最大匹配数简单题,匈牙利算法.学习二分匹配传送门:http://blog.csdn.ne ...

  5. UI进阶 动画

    前言:所谓动画,即应用界面上展示的各种过渡效果,不过其实没有动画并不影响我们产品的功能实现 一.动画 1.动画可以达到的效果 传达状态 提高用户对直接操作的感知 帮助用户可视化操作的结果 2.使用动画 ...

  6. Javascript 原型继承(续)—从函数到构造器的角色转换

    对于每一个声明的函数,里边都会带有一个prototype成员,prototype会指向一个对象,现在我们来聚焦prototype指向的这个对象,首先我们会认为,这个对象是一个该函数对应的一个实例对象, ...

  7. 三,对于printf函数和C语言编程的初步拓展

    前面说过了,任何程序都要有输出,所以printf函数是一个很重要的函数,所以有必要在学变量之前先拓展一下. 其实编程就是用计算机语言说话,一句一句地说,只要语法没错就能运行,至于能实现什么功能,就看编 ...

  8. iOS UIButton EdgeInsets

    说一下系统的button,image 和 title的位置关系 默认image 和 title的位置关系: 随便画了草图,有点丑,不过不妨碍理解: 第一种:在button上只设置文字,这个时候,but ...

  9. Cocos2d-x中由sprite来驱动Box2D的body运动(用来制作平台游戏中多变的机关)

    好久都没写文章了,就来一篇吧.这种方法是在制作<胖鸟大冒险>时用到的.<胖鸟大冒险>中使用Box2D来进行物理模拟和碰撞检測,因此对每一个机关须要创建一个b2body.然后&l ...

  10. TFS 图标意思

    小人:文件被其他人签出 对号:文件被自己签出 锁: 文件已经被签入 加号:新增加一个文件