#include <bits/stdc++.h>
using namespace std; const int N = ;
const int M = ; struct Edge {
int to, next;
} edge[M];
int head[N];
int cntE;
void addedge(int u, int v) {
edge[cntE].to = v; edge[cntE].next = head[u]; head[u] = cntE++;
edge[cntE].to = u; edge[cntE].next = head[v]; head[v] = cntE++;
} int dfn[N], low[N], idx;
int stk[N], top;
bool cut[N];
int block[N];
// 一个割点可能在很多个连通分量
// 如果一个双连通分量内的某些顶点在一个奇圈中(即双连通分量含有奇圈
// 那么这个双连通分量的其他顶点也在某个奇圈中
// 如果一个双连通分量含有奇圈,则他必定不是一个二分图。反过来也成立,这是一个充要条件。
int no;
// block[i] 是去掉i这个节点能够多几个联通块
void tarjan(int u, int fa) {
dfn[u] = low[u] = ++idx;
stk[top++] = u;
block[u] = ;
int son = ;
for (int i = head[u]; ~i; i = edge[i].next) {
int v = edge[i].to;
if (v == fa || v == no) continue;
if (!dfn[v]) {
son++;
tarjan(v, u);
low[u] = min(low[u], low[v]);
if (u != fa && low[v] >= dfn[u]) {
cut[u] = true;
block[u]++;
}
/* 求每一个连通分量
if (low[v] >= dfn[u]) { int x;
do {
x = stk[--top];
push(x);
} while (x != v);
push(u);
}
*/
} else {
low[u] = min(low[u], dfn[v]);
}
}
if (u == fa) {
if (son > ) cut[u] = ;
block[u] = son-;
}
} void init() {
memset(dfn, , sizeof dfn);
top = idx = cntE = ;
} int main()
{
int n, m;
while (~scanf("%d%d", &n, &m)) {
int u, v;
memset(head, -, sizeof head);
for (int i = ; i < m; ++i) {
scanf("%d%d", &u, &v);
addedge(u, v);
}
int ans = ;
for (u = ; u < n; ++u) {
init(); int cnt = ; no = u;
for (v = ; v < n; ++v) {
if (v != u && !dfn[v]) {
tarjan(v, v);
cnt++;
}
}
for (v = ; v < n; ++v) {
if (v != u) ans = max(ans, cnt + block[v]);
}
}
printf("%d\n", ans);
}
return ;
}

hdu4587-TWO NODES(割点)的更多相关文章

  1. HDU 4587 TWO NODES 割点

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意: 删除两个点,使连通块的数目最大化 题解: 枚举删除第一个点,然后对删除了第一个点的图跑 ...

  2. hdu4587 TWO NODES

    问一个无向图中去掉任意两点后剩下的连通分量的个数最大值 枚举第一个删去的点,在剩下的子图中求割点 注意,剩下的子图可能不连通,那么就要对每个连通块求割点 计算删去一个点后剩余连通分量个数 left 的 ...

  3. hdu4587 Two Nodes 求图中删除两个结点剩余的连通分量的数量

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题目给了12000ms,对于tarjan这种O(|V|+|E|)复杂度的算法来说,暴力是能狗住的 ...

  4. 备战noip week8

    POJ1144 网络 description: 给出一张\(N\)个点的无向图,求其中割点的个数 data range: \(N\le 100\) solution: 一道模板题(但是读入实在是把我恶 ...

  5. HDU 4587 TWO NODES 枚举+割点

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 TWO NODES Time Limit: 24000/12000 MS (Java/Other ...

  6. HDU4587--TWO NODES(无向图割点,暴力出奇迹)这是我见过的时间最长的题。。。

    TWO NODES Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  7. HDU - 4587 TWO NODES (图的割点)

    Suppose that G is an undirected graph, and the value of stab is defined as follows: Among the expres ...

  8. HDU 4587 TWO NODES(割点)(2013 ACM-ICPC南京赛区全国邀请赛)

    Description Suppose that G is an undirected graph, and the value of stab is defined as follows: Amon ...

  9. POJ1523 SPF[无向图割点]

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8139   Accepted: 3723 Description C ...

随机推荐

  1. Notifications Nagios

    Introduction I've had a lot of questions as to exactly how notifications work. This will attempt to ...

  2. SQL Server CONVERT() 函数

    http://www.w3school.com.cn/sql/func_convert.asp 定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用 ...

  3. PowerDesigner(五)-概念数据模型(CDM生成LDM,PDM和OOM)

    概念数据模型 概念数据模型(Conceptual Data Model,CDM):表达的是数据整体逻辑结构,该结构独立于任何软件和数据存储结构,即它只是系统分析人员,应用程序设计人员,维护人员和用户之 ...

  4. binary 和 varbinary

    固定长度或可变长度的 Binary 数据类型. binary [ ( n ) ] 长度为 n 字节的固定长度二进制数据,其中 n 是从 1 到 8,000 的值.存储大小为 n 字节. varbina ...

  5. Android安全问题 抢先接收广播 - 内因篇之广播接收器注册流程

    导读:本文说明系统是如何注册动态广播以及静态广播,这里主要注意其注册的顺序 这篇文章主要是针对我前两篇文章 android安全问题  抢先开机启动 - 结果篇 android安全问题  抢先拦截短信 ...

  6. 抱怨IT公司人才缺乏?留住现有人才方是正途

    摘要:员工的好坏决定着IT公司的未来,可很多IT公司在抱怨之时自己的人才却正在流失,如何留住现有的优秀员工?国外知名经理人Sharon Florentine建议:改善自己的管理.让员工不断地学习.创建 ...

  7. 彻底搞懂javascript中的match, exec的区别

    在工作中经常发现一些同学把这两个方法搞混,以致把自己弄的很郁闷.所以我和大家一起来探讨一下这两个方法的奥妙之处吧. 我们分以下几点来讲解: 相同点: 1.两个方法都是查找符合条件的匹配项,并以数组形式 ...

  8. The Impact of Garbage Collection on Application Performance

    As we’ve seen, the performance of the garbage collector is not determined by the number of dead obje ...

  9. 错误代码: 1005 Can't create table 'hibernate.bill' (errno: 150)

    主要问题以及解决办法是: 1,MySQL支持外键约束,并提供与其它DB相同的功能,但表(外键表和外键主表)类型必须为 InnoDB,外键表和外键主表的类型都要是innoDB 建表约束语句: user表 ...

  10. php类的实现

    zend_class_entry typedef struct _zend_class_entry zend_class_entry; struct _zend_class_entry { char ...