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. centos7最小化安装图形界面

    1.安装X Window System命令 yum groupinstall "X Window System" 选择y直接安装就可以了 2.安装图形界面软件 GNOME yum ...

  2. 查看Linux系统信息命令

    系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...

  3. office2016 下载直通车

    下载地址 微软官方序列号(产品激活密钥):NKGG6-WBPCC-HXWMY-6DQGJ-CPQVG. 激活工具下载 分享源地址

  4. Django Rest Framework 简介及 初步使用

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  5. JS DOM 实例(5大常用实例)

    第1个实例:循环单击变色 <html lang="en"> <head> <meta charset="UTF-8"> &l ...

  6. 【转载】Select函数实现原理分析

    Select函数实现原理分析 <原文> select需要驱动程序的支持,驱动程序实现fops内的poll函数.select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用 ...

  7. Android高级控件(一)——ListView绑定CheckBox实现全选,添加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,添加和删除等功能 这个控件还是挺复杂的.也是项目中应该算是比較经常使用的了,所以写了一个小Demo来讲讲,主要是自己定义a ...

  8. Struts2中的异步提交(ajaxfileupload异步上传(图片)插件的使用)

    server端採用struts2来处理文件上传. 所需环境: jquery.js ajaxfileupload.js struts2所依赖的jar包 及struts2-json-plugin-2.1. ...

  9. Loopback測试软件AX1用户手冊 V3.1

    点击:AX1 软件下载 1. 什么是AX1 AX1程序是基于windows的PC程序,用来评估 iinChip™的性能,也即是wiznet的硬件TCP/IP芯片. AX1通过网络与iinChip™评估 ...

  10. 扩展MARA 加入Z字段BAPI_TE_MARA

    1. 在MARA中APPEND新的结构 2.在BAPI_TE_MARA中APPEND新的结构 (可是这里不能有QUAN,CURR,DEC等数据类型) 3.在BAPI_TE_MARAX中APPEND新的 ...