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的更多相关文章

  1. poj 2117 Electricity【点双连通求删除点后最多的bcc数】

    Electricity Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4727   Accepted: 1561 Descr ...

  2. POJ 2117 Electricity(割点求连通分量)

    http://poj.org/problem?id=2117 题意:求删除图中任意一个顶点后的最大连通分量数. 思路: 求出每个割点对应的连通分量数,注意这道题目中图可能是不连通的. 这道题目我wa了 ...

  3. POJ 2117 Electricity 双联通分量 割点

    http://poj.org/problem?id=2117 这个妹妹我竟然到现在才见过,我真是太菜了~~~ 求去掉一个点后图中最多有多少个连通块.(原图可以本身就有多个连通块) 首先设点i去掉后它的 ...

  4. POJ—— 2117 Electricity

    Electricity Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5620   Accepted: 1838 Descr ...

  5. poj 2117 Electricity(tarjan求割点删掉之后的连通块数)

    题目链接:http://poj.org/problem?id=2117 题意:求删除一个点后,图中最多有多少个连通块. 题解:就是找一下割点,根节点的割点删掉后增加son-1(son为子树个数),非根 ...

  6. poj 2117 Electricity

    /* Tarjan求割点 */ #include<iostream> #include<cstdio> #include<cstring> #include< ...

  7. Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题

    Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...

  8. 【POJ】2117 Electricity

    无向图求割点和连通块. /* POJ2117 */ #include <iostream> #include <vector> #include <algorithm&g ...

  9. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

随机推荐

  1. CSS变量实用指南及注意事项

    近年来,一些动态特性已经开始成为 CSS 语言本身的一部分. CSS变量 – 官方的术语为 "自定义属性" – 已经已经加入规范并且具有很好的浏览器支持,而 CSS mixins ...

  2. Vue PC端框架

    Vue PC端框架 1. Element 中文文档:http://element-cn.eleme.io/#/zh-CN github地址:https://github.com/ElemeFE/ele ...

  3. react生命周期知识点

    react生命周期知识点 一个React组件的生命周期分为三个部分:实例化.存在期和销毁时. 实例化 组件在客户端被实例化,第一次被创建时,以下方法依次被调用: 1.getDefaultProps2. ...

  4. 利用VisualVM监视远程JVM

    VisualVM介绍 VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump.Thread Dump.内存对象实例情况.GC ...

  5. 20个C#热点问题

  6. nyoj 1189 yougth和他的朋友们 (DP)

    题目:pid=1189" target="_blank">nyoj 1189 yougth和他的朋友们 这题目是14年北京赛区的原题.讲题的时候说有三种解法,我们是 ...

  7. Java多线程之~~~线程安全容器的非堵塞容器

    在并发编程中,会常常遇到使用容器.可是假设一个容器不是线程安全的.那么他在多线程的插入或者删除的过程 中就会出现各种问题.就是不同步的问题.所以JDK提供了线程安全的容器,他能保证容器在多线程的情况下 ...

  8. 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 ...

  9. 揭秘Product Hunt怎样运用邮件崛起

    Product Hunt正被硅谷热议,而大家谈论Product Hunt时,经常涉及邮件营销. Product Hunt由Ryan Hoover 在2013年11月创立.鼓舞人们发现和分享新产品的站点 ...

  10. 解决Myeclipse在调试(debug)时无法显示变量值问题

    解决Myeclipse在调试(debug)时无法显示变量值问题 突然发现myeclipse在调试时当鼠标放在变量上面时无法显示变量值了 ctrl+shift+D居然提示cannot be resolv ...