博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2117 (割点+连通分量)
阅读量:6678 次
发布时间:2019-06-25

本文共 921 字,大约阅读时间需要 3 分钟。

题目链接

题目大意:在一个非连通图中,求一个切除图中任意一个割点方案,使得图中连通分量数最大。

解题思路

一个大陷阱,m可以等于0,这时候要特判,结果就是n-1。

同时出题者脑子秀逗了,也不给C的范围。我开了两倍点大小RE了,于是怒开了五倍点大小才A了。

本题不是连通图,需要先计算原始图中的连通分量。方法就是dfs染色。

然后dfs求割点。

之后枚举割点,由于是非连通图,所以连通分量数=原始分量数+block-1。

-1的原因是,每次相当于对其中一个连通分量计算,加上新的block之后,所以要减-1。

 

#include "cstdio"#include "cstring"#include "vector"using namespace std;#define maxn 10005struct Edge{    int to,next;}e[maxn*5];int dfs_clock,pre[maxn],block,head[maxn],tol;bool cut[maxn],vis[maxn];void addedge(int u,int v){    e[tol].to=v;    e[tol].next=head[u];    head[u]=tol++;}int dfs(int u,int fa){    int lowu=pre[u]=++dfs_clock;    int child=0;    for(int i=head[u];i!=-1;i=e[i].next)    {        int v=e[i].to;        if(!pre[v])        {            int lowv=dfs(v,u);            lowu=min(lowu,lowv);            if(lowv>=pre[u]) cut[u]=true;        }        else if(pre[v]

 

转载于:https://www.cnblogs.com/neopenx/p/4062182.html

你可能感兴趣的文章
接口測试-HAR
查看>>
$.each 和$(selector).each()的区别
查看>>
45435
查看>>
JSON格式自动解析遇到的调用方法问题.fromJson() ..readValue()
查看>>
Crystal Reports for Visual Studio 2015 安装
查看>>
iOS UI 15 网络编程下载 图片 音乐 大文件 视频 get/ post方法
查看>>
linux文件系统 - 初始化(二)
查看>>
Python的可视化图表工具集
查看>>
《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》
查看>>
Python的优点与功能
查看>>
三个文件,
查看>>
webpack的总结
查看>>
hibernate 一级缓存和二级缓存
查看>>
javac不是内部或外部命令
查看>>
mvc SelectList selected失效的解决方法
查看>>
JAVA 设计模式 中介者模式
查看>>
我的软件工程课目标
查看>>
var a={n:1}; var b=a; a.x=a={n:2}; console.log(a.x); console.log(b.x);
查看>>
【HDOJ】3016 Man Down
查看>>
window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;...
查看>>