[题解]P3225 [HNOI2012] 矿场搭建

news/2024/11/13 15:12:08/文章来源:https://www.cnblogs.com/Sinktank/p/18543596

P3225 [HNOI2012] 矿场搭建

挖煤点坍塌相当于把该点和与其相连的边在图上删掉。

借用wjyyy的题解,我们定义“叶子连通块”为“只包含\(1\)个割点的点双连通分量”,“非叶子连通块”为“包含\(\ge 2\)个割点的点双连通分量”。

如下图,橙色点是割点,红色框圈出的是点双,加粗的是叶子连通块。

叶子连通块只有\(1\)个割点,所以必须保证该连通块内部存在逃生出口,否则割点塌陷,里面的人就逃不出去了。显然逃生出口只要设置在此连通块的非割点处即可。

由于非叶子连通块有\(\ge 2\)个割点,所以就算其中一个割点塌陷,该连通块的人仍然可以通过其他未塌陷的割点跑到叶子连通块或者其他连通块去。既然任何一个直接可达的叶子连通块都已经存在逃生出口了,那就不必额外耗费资源去建逃生出口了。

所以这道题第\(1\)问的答案是叶子连通块的个数,第\(2\)问的答案是(每个叶子连通块的大小\(-1\))的乘积。

注意特判不存在叶子连通块(也就是整张图不存在割点)的情况,此时需要建\(2\)个逃生出口,以防其中一个塌陷。答案是\(C_n^2=\frac{n(n-1)}{2}\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define N 1010
using namespace std;
int n,m,dfn[N],low[N],tim,cnt1,cnt2;
stack<int> p;
bitset<N> is,vis;
vector<int> G[N];
void tarjan(int u){dfn[u]=low[u]=++tim;int ch=0;for(int i:G[u]){if(!dfn[i]){tarjan(i),ch++;low[u]=min(low[u],low[i]);if(u!=1&&low[i]>=dfn[u]) is[u]=1;}else low[u]=min(low[u],dfn[i]);}if(u==1&&ch>=2) is[u]=1;
}
void dfs(int u){if(vis[u]) return;vis[u]=1,cnt2++;if(is[u]){p.push(u),cnt1++;return;}for(int i:G[u]) dfs(i);
}
void solve(int num){tarjan(1);int ans1,ans2;if(is.none()){ans1=2,ans2=n*(n-1)/2;}else{ans1=0,ans2=1;for(int i=1;i<=n;i++){if(is[i]) continue;cnt1=cnt2=0,dfs(i);while(!p.empty()) vis[p.top()]=0,p.pop();if(cnt1==1) ans1++,ans2*=(cnt2-1);}}cout<<"Case "<<num<<": "<<ans1<<" "<<ans2<<"\n";
}
signed main(){for(int koishi=1;;koishi++){memset(dfn,0,sizeof dfn);memset(low,0,sizeof low); vis=is=tim=n=0;cin>>m;if(!m) break;for(int i=1,u,v;i<=m;i++){cin>>u>>v;G[u].emplace_back(v);G[v].emplace_back(u);n=max(n,max(u,v));}solve(koishi);for(int i=1;i<=n;i++) G[i].clear();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832980.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDCA —— 内存架构和子系统内存控制器

Digital Design and Computer Architecture Lecture21的学习笔记,介绍内存架构和子系统、内存控制器,并详细介绍了DRAM的内部结构。1. 内存架构和子系统 1.1 如何控制访问?访问控制:存储单元的访问是通过 访问晶体管(access transistors) 进行控制的。访问晶体管像开关一…

ubuntu上安装 NVIDIA GeForce RTX 4090驱动

背景 ai服务器上安装完ubuntu系统后,需要安装NVIDIA显卡驱动 官网驱动下载https://www.nvidia.cn/drivers/details/235646/驱动安装 1.卸载原有驱动 sudo apt remove --purge nvidia*2.备份 sudo cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf_bak 3.末尾…

springboot将文件处理成压缩文件

前言 在工作我们经常会出现有多个文件,为了节省资源会将多个文件放在一起进行压缩处理;为了让大家进一步了解我先将springboot处理的方法总结如下,有不到之处敬请大家批评指正! 一、文件准备:https://qnsc.oss-cn-beijing.aliyuncs.com/crmebimage/public/product/2024/11…

CMDB平台(进阶篇):CMDB的构建指南(一)

CMDB(配置管理数据库)的构建是一个复杂而细致的过程,其中组建项目团队和定义项目是至关重要的初始阶段。以下是根据高权威性来源整理的,关于这两个阶段的详细指南: 一、组建项目团队 团队角色与技能: 选择的团队必须具备相应的技能、经验、知识去解释、设计和实施一个CMD…

出差及报销问题

出差问题 报销问题 一、提交报销申请提交报销申请在应用导航的 ERP门户系统 中,选择我要报账在保障服务平台--单据管理--全部单据里选择--差旅费报账单(新)报销申请单填写选择想要报销的出差审批单上传想要报销的发票后点击下一步填写基本信息影像张数: 上传附件图片数量。…

职场效率倍增!学会这6个任务管理法则轻松完成工作

身处职场,我们每个人都在日复一日的工作中面对着不断增加的任务清单。如何有效管理、合理分配、确保准时交付,成了现代职场人最常面临的挑战之一。如果管理不当,不仅影响个人效率,整个团队也可能因此陷入无休止的混乱与低效。经过几年的职场摸索,我总结出了一些应对繁杂任…

烟火检测视频分析网关算法网关智慧工厂安全生产视频监管方案

在数字化时代,企业转型升级已成为实现可持续发展的必由之路。特别是在工业领域,工厂的智能化转型不仅能够提高生产效率,还能加强安全管理,确保员工的健康与安全。TSINGSEE青犀AI智能分析网关V4与安防监控视频管理系统EasyCVR视频融合平台的结合,为工厂提供了一个实现智能化…

nginx代理minio集群的websocket问题,求解决!!!

1.问题描述 nginx代理minio集群,web控制台浏览buckets下的列表一直在loading..., 不使用nginx代理地址,通过minio集群直接访问是没有问题的 从报错来看是websocket连接失败问题,按照官方文档以及其他博主的方式都配置了,仍未解决!!!!!2.minio镜像版本:minio/minio:RE…

nginx代理minio的websocket问题,求解决!!!

1.问题描述 nginx代理minio集群,web控制台浏览buckets下的列表一直在loading...,目前来看是websocket的问题,安装官方文档和其他博主的方式都配置了,仍未解决!!!!!2.minio镜像版本:minio/minio:RELEASE.2024-11-07T00-52-20Z3.nginx版本1.20.24.nginx配置[root@minio-…

GitLab 如何降级?

本分分享 GitLab 降级的流程和注意事项。极狐GitLab 为 GitLab 的中文发行版,本文以私有化部署的极狐GitLab 为例来演示整个过程。 【极狐GitLab 推出 GitLab 老旧版本的专业升级服务,可以让 12.x、13.x、14.x、15.x 等老旧版本的升级平滑不出问题】 首先确定当前的版本信息,…

希音面试:亿级用户 日活 月活,如何统计?(史上最强 HyperLogLog 解读)

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

【JetBrains CLion 2024软件下载与安装教程】

1、安装包 CLion2024: 链接:https://pan.quark.cn/s/ed93e8cb245e 提取码:fhwc CLion Pro 2021: 链接:https://pan.quark.cn/s/30927a3da509 提取码:1t2w CLion Pro 2018: 链接:https://pan.quark.cn/s/f3a7af5e8ca6 提取码:PW1E 2、安装教程(建议关闭杀毒软件) 1) …