当前位置: 首页 > news >正文

P3225 [HNOI2012] 矿场搭建 题解

当一个点双联通分量里面的割点数量为\(1\)的时候,那么需要修建一个出口(即叶子双联通分量),因为如果抹掉割点的话,就不联通了。如果割点数量\(\ge 2\)的话,那么不需要修建,因为它总能通过其中一个割点连向已经修建好出口的区域。

需要特判一下是否只有一个点双联通分量,如果只有一个的话,那么答案就是\(\binom{2}{n}\),要建两个出口。

代码

#include <bits/stdc++.h>
using namespace std;#define ll long long const int N=1e3+10;
int dfn[N],low[N],idx;
stack<int> stk;
int m;
vector<int> e[N];
bool is[N],flag[N];
ll mul=1,ans=0;vector<vector<int>> bcc;void Tarjan(int u,int fa){dfn[u]=low[u]=++idx;stk.push(u);int child=0;for(int v:e[u]){if(!dfn[v]){child++;Tarjan(v,u);low[u]=min(low[u],low[v]);if(low[v]>=dfn[u]){if(fa^u)  flag[u]=true;int x;vector<int> res;res.push_back(u);do{x=stk.top();res.push_back(x);stk.pop();}while(x^v);bcc.push_back(res);}}else low[u]=min(low[u],dfn[v]);}if(fa==u&&child>=2) flag[u]=true;
}void sol(){for(int i=1;i<=N-5;i++){dfn[i]=low[i]=0;is[i]=flag[i]=false;e[i].clear();}mul=1,ans=idx=0; for(int i=0;i<m;i++){int s,t;cin>>s>>t;e[s].push_back(t),e[t].push_back(s);is[s]=is[t]=true;}for(int i=1;i<N;i++){if(is[i]){Tarjan(i,i);break;}}if(bcc.size()==1){ans=2,mul=idx*(idx-1)/2;}else{for(auto res:bcc){int cnt=0;for(int x:res){if(flag[x]) cnt++;}if(cnt==1) ans+=1,mul*=(res.size()-1ll);}}bcc.clear();
}int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int cnt=1;while(1){cin>>m;if(!m) return 0;sol();cout<<"Case "<<(cnt++)<<": "<<ans<<" "<<mul<<'\n';}
}

总结:在解决无向图的割点问题时,可从叶子点双联通分量角度出发进行考虑。

http://www.jsqmd.com/news/476509/

相关文章:

  • 基于瑞萨RA2 MCU的智能陪伴时钟嵌入式设计
  • Linux `shutdown` 命令速查:安全关机与重启
  • csdn营销模板
  • ABAP字符串处理技巧:如何优雅处理SPLIT后的空字符串问题
  • 解放数字音乐:NCMconverter打破格式禁锢的技术实践
  • Linux 中快速从查看vc文件中指定位置的碱基
  • 突破百度网盘限速壁垒:baidu-wangpan-parse直链解析技术全攻略
  • OpenCV预处理+Zbar识别:非标准二维码的定位解码全流程解析
  • 3个强力功能的网盘加速工具:让下载效率提升10倍的实用指南
  • Stable Yogi Leather-Dress-Collection实战案例:ACG周边设计师的皮衣风格探索
  • Time-MoE:解锁时间序列预测的亿级参数潜力
  • Cesium实战:3DTiles模型光照太暗?教你动态调整光源亮度(附完整代码)
  • DETR深度解析:如何用Transformer革新端到端目标检测
  • 基于立创·天猛星MSPM0G3507开发板的电机PID控制实战:编码器测速、定距与曲线显示
  • Python flask 大学生运动会管理系统的分析与设计
  • 告别SQL性能焦虑:金仓数据库“连接条件下推“的性能魔法
  • C++中的中介者模式
  • 基于模型的三相异步电机效率实时监测方法研究
  • Linux系统管理员实用指南:批量创建用户并自动化配置权限(Shell脚本实现)
  • 从零到一:基于Unsloth与vLLM的Qwen3-4B模型高效微调与生产部署实战
  • LAMMPS新手必看:10个常见问题解答与实战避坑指南
  • Cisco Packet Tracer 6.0汉化指南:从下载到语言切换全流程解析
  • 2026开年指南:如东企业GEO服务商深度测评与选择策略 - 2026年企业推荐榜
  • Vite项目实战:5分钟搞定跨域代理配置(附环境变量最佳实践)
  • 南京邮电大学电装实习2023:从零到一构建个人计算与网络实验平台
  • Z-Image-Turbo-rinaiqiao-huiyewunv 与微信小程序开发结合:打造移动端AI助手
  • 从模型到部署:瑞芯微RKNPU实战指南与RKNN转换全流程解析
  • 深入解析Linux网络架构:XDP、Netfilter与tc/qdisc的协同工作与性能优化
  • 优化colmap增量重建:针对360全景切割图像的多子模型问题分析与参数调优
  • Python flask 宠物医院管理系统-vue