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 ...
随机推荐
- CSS变量实用指南及注意事项
近年来,一些动态特性已经开始成为 CSS 语言本身的一部分. CSS变量 – 官方的术语为 "自定义属性" – 已经已经加入规范并且具有很好的浏览器支持,而 CSS mixins ...
- Vue PC端框架
Vue PC端框架 1. Element 中文文档:http://element-cn.eleme.io/#/zh-CN github地址:https://github.com/ElemeFE/ele ...
- react生命周期知识点
react生命周期知识点 一个React组件的生命周期分为三个部分:实例化.存在期和销毁时. 实例化 组件在客户端被实例化,第一次被创建时,以下方法依次被调用: 1.getDefaultProps2. ...
- 利用VisualVM监视远程JVM
VisualVM介绍 VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump.Thread Dump.内存对象实例情况.GC ...
- 20个C#热点问题
- nyoj 1189 yougth和他的朋友们 (DP)
题目:pid=1189" target="_blank">nyoj 1189 yougth和他的朋友们 这题目是14年北京赛区的原题.讲题的时候说有三种解法,我们是 ...
- Java多线程之~~~线程安全容器的非堵塞容器
在并发编程中,会常常遇到使用容器.可是假设一个容器不是线程安全的.那么他在多线程的插入或者删除的过程 中就会出现各种问题.就是不同步的问题.所以JDK提供了线程安全的容器,他能保证容器在多线程的情况下 ...
- HDU 1040.As Easy As A+B【排序】【如题(水!水!水!)】【8月24】
As Easy As A+B Problem Description These days, I am thinking about a question, how can I get a probl ...
- 揭秘Product Hunt怎样运用邮件崛起
Product Hunt正被硅谷热议,而大家谈论Product Hunt时,经常涉及邮件营销. Product Hunt由Ryan Hoover 在2013年11月创立.鼓舞人们发现和分享新产品的站点 ...
- 解决Myeclipse在调试(debug)时无法显示变量值问题
解决Myeclipse在调试(debug)时无法显示变量值问题 突然发现myeclipse在调试时当鼠标放在变量上面时无法显示变量值了 ctrl+shift+D居然提示cannot be resolv ...