POJ——T2117 Electricity
http://poj.org/problem?id=2117
Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 5459 | Accepted: 1788 |
当m==0 时,特判输出 n-1~~~
先求出原始的连通分量,
然后只有删割点才会增加连通分量,枚举每个割点
最后加上原始的
#include <algorithm>
#include <cstring>
#include <cstdio> using namespace std; const int N();
int n,m,u,v;
int sumedge,head[N<<];
struct Edge
{
int to,next;
Edge(int to=,int next=) :
to(to),next(next) {}
}edge[N*]; void ins(int from,int to)
{
edge[++sumedge]=Edge(to,head[from]);
head[from]=sumedge;
} int low[N<<],dfn[N<<],tim;
int sumcol,num[N];
int cutpoint[N]; void DFS(int now,int pre)
{
low[now]=dfn[now]=++tim;
int sumtredge=,if_cutpoint=;
for(int i=head[now];i!=-;i=edge[i].next)
{
int go=edge[i].to;
if((i^)!=pre)
{
if(!dfn[go])
{
sumtredge++;
DFS(go,i);
if(low[go]>=dfn[now])
{
if_cutpoint=;
num[now]++;
} low[now]=min(low[now],low[go]);
}
else low[now]=min(low[now],dfn[go]);
}
}
if(pre==-)
{
if(sumtredge>) cutpoint[now]=;
}
else if(if_cutpoint) cutpoint[now]=;
} int ans,cnt,tmp,vis[N],root[N],cut[N]; void link(int x)
{
vis[x]=;
for(int i=head[x];i!=-;i=edge[i].next)
{
v=edge[i].to;
if(!vis[v]) link(v);
}
} void cut_point(int pre,int fa)
{
vis[pre]=;
for(int i=head[pre];i!=-;i=edge[i].next)
{
int go=edge[i].to;
if(!vis[go])
{
if(pre==fa) cnt++;
cut_point(go,fa);
}
}
} void init(int n)
{
sumedge=-; ans=tim=tmp=cnt=;
memset(vis,,sizeof(vis));
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
memset(num,,sizeof(num));
memset(cut,,sizeof(cut));
memset(root,,sizeof(root));
memset(head,-,sizeof(head));
memset(cutpoint,,sizeof(cutpoint));
} int main()
{
// freopen("makerout.txt","r",stdin);
// freopen("myout.txt","w",stdout); while(~scanf("%d%d",&n,&m)&&n)
{
init(n);
if(m==) printf("%d\n",n-);
else
{
for(;m;m--)
{
scanf("%d%d",&u,&v);
ins(u,v); ins(v,u);
}
for(int i=;i<n;i++)
if(!vis[i]) ++tmp,link(i);
for(int i=;i<n;i++)
if(!dfn[i]) DFS(i,-);
for(int i=;i<n;i++)
if(cutpoint[i])
{
memset(vis,,sizeof(vis));
cut_point(i,i);
ans=max(ans,cnt-);
cnt=;
}
ans+=tmp;
printf("%d\n",ans);
}
}
return ;
}
POJ——T2117 Electricity的更多相关文章
- poj 2117 Electricity【点双连通求删除点后最多的bcc数】
Electricity Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4727 Accepted: 1561 Descr ...
- POJ 2117 Electricity(割点求连通分量)
http://poj.org/problem?id=2117 题意:求删除图中任意一个顶点后的最大连通分量数. 思路: 求出每个割点对应的连通分量数,注意这道题目中图可能是不连通的. 这道题目我wa了 ...
- POJ 2117 Electricity 双联通分量 割点
http://poj.org/problem?id=2117 这个妹妹我竟然到现在才见过,我真是太菜了~~~ 求去掉一个点后图中最多有多少个连通块.(原图可以本身就有多个连通块) 首先设点i去掉后它的 ...
- POJ—— 2117 Electricity
Electricity Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5620 Accepted: 1838 Descr ...
- poj 2117 Electricity(tarjan求割点删掉之后的连通块数)
题目链接:http://poj.org/problem?id=2117 题意:求删除一个点后,图中最多有多少个连通块. 题解:就是找一下割点,根节点的割点删掉后增加son-1(son为子树个数),非根 ...
- poj 2117 Electricity
/* Tarjan求割点 */ #include<iostream> #include<cstdio> #include<cstring> #include< ...
- Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题
Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...
- 【POJ】2117 Electricity
无向图求割点和连通块. /* POJ2117 */ #include <iostream> #include <vector> #include <algorithm&g ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
随机推荐
- HDU 1575 Tr A( 简单矩阵快速幂 )
链接:传送门 思路:简单矩阵快速幂,算完 A^k 后再求一遍主对角线上的和取个模 /********************************************************** ...
- 小学生都能学会的python(函数)
小学生都能学会的python(函数) 神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 retu ...
- W10如何开启LinuxBash及安装Ubuntu
W10如何开启LinuxBash的功能 1)开启开发人员模式 2)启动部分windows功能 完成后重启系统 然后在cmd中输入bash按命令操作即可使用bash命令 3)下载安装ubuntu lxr ...
- 【2018 Multi-University Training Contest 2 1007】Naive Operations
[链接] 我是链接,点我呀:) [题意] 给你两个数组a,b; b数组是1..n的一个排列. 现在给你两种操作: add l,r将a[l..r]都加上1 query l,r 询问$∑^r_l\frac ...
- Image Processing for Very Large Images
The key idea here is the partial image descriptor VIPS(VASARI Image Processing System) 是近几年逐渐兴起的针对大图 ...
- ASP.NET-dropdownlist默认值
可以在第三个选项中定义一个默认值,但是返回数据的时候就不需要这种类似"请选择名称"之类的提示了,所以在构造seleclt option的时候,要在option中的属性中加上sele ...
- [using_microsoft_infopath_2010]Chapter4 使用SharePoint列表表单
本章概要: 1.把SharePoint列表表单转换成InfoPath可用形式 2.使用字段和控件 3.规划表单布局 4.理解列表表单的局限性
- 用MyEclipse 打包JAR文件
用MyEclipse 将自己定义标签打成JAR包 1.新建一个javaproject 2.将标签有关的java代码拷贝到新建javaproject的一个包中,这时会报错 ...
- Asp.net动态页面静态化之初始NVelocity模板引擎
Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...
- ThinkPHP5.0框架开发--第10章 TP5.0验证器
ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...