洛谷 P1330:封锁阳光大学 ← 染色法 + 二分图

news/2025/11/28 9:00:25/文章来源:https://www.cnblogs.com/triwa/p/19280186

【题目来源】
https://www.luogu.com.cn/problem/P1330

【题目描述】
曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。
阳光大学的校园是一张由 n 个点构成的无向图,n 个点之间由 m 条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。
询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。

【输入格式】
第一行两个正整数,表示节点数和边数。 接下来 m 行,每行两个整数 u,v,表示点 u 到点 v 之间有道路相连。

【输出格式】
仅一行。如果河蟹无法封锁所有道路,则输出 Impossible,否则输出一个整数,表示最少需要多少只河蟹。

【输入样例一】
3 3
1 2
1 3
2 3

【输出样例一】
Impossible​​​​​​​

【输入样例二】
3 2
1 2
2 3

【输出样例二】
1

【数据范围】
对于 100% 的数据,1≤n≤10^4,1≤m≤10^5,保证没有重边。

【算法分析】
● 二分图的概念:如果无向图 G=(V, E) 的所有点可以分为两个集合 V1,V2,所有边都在 V1 与 V2 之间,且 V1,V2 的内部都没有边,则称 G 是一个二分图。

● 一个图是否为二分图,一般用“染色法”进行判断。染色法的核心思想非常直观:尝试用两种颜色对图中的所有顶点进行着色,并确保‌任何一条边两端的顶点颜色都不相同‌。如果能成功完成着色,则该图是二分图;否则,不是。

● 染色法的染色逻辑
(1)使用两种颜色:颜色 1 和颜色 2。
(2)若当前节点染色为 c,相邻节点必须染为 3^c(即 3-c)。这是因为,3^1=2,3^2=1,故通过异或运算可实现颜色切换。

● 染色法的算法流程通常基于 BFS 或 DFS 实现。
(1)选择一种颜色(如 1)作为起始颜色。
(2)从一个未访问的节点开始,将其染色,然后遍历其所有邻居。
(3)若邻居未染色,则将其染成与当前节点相反的颜色(如 2),并递归(DFS)或入队(BFS)处理。
(4)若邻居已染色,则检查其颜色是否与当前节点相反。若颜色相同,则说明存在奇环,该图不是二分图。

● 树结构天然是二分图
(1)无环性‌:树是无环连通图,因此不可能存在奇数环。
(2)层次结构‌:从任意根节点开始,奇偶层自然形成两个独立集合。
(2)可二染色性‌:树可以用两种颜色进行顶点着色,使得相邻顶点颜色不同。

AcWing 4205

● 由于树本身是二分图,节点可以染成两种颜色。设树的节点数为 n,其中一种颜色的节点数为 m,若保证增边后的图形仍是二分图,则最大可增加的边数为 m*(n-m)-(n-1)。其中,m*(n-m) 为完全二分图的最大边数 ,n-1 为树的边数。

【算法代码】
本题代码大部分与“AcWing 860:染色法判定二分图”相同。详见:https://blog.csdn.net/hnjzsyjyj/article/details/155323274

#include <bits/stdc++.h>
using namespace std;const int N=1e4+5;
const int M=1e5+5;
int e[M<<1],ne[M<<1],h[N],idx;
int color[N];
int cnt[3],ans;
int n,m;void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}//Dye node u with color c
bool dye(int u,int c) {color[u]=c,cnt[c]++;for(int i=h[u]; i!=-1; i=ne[i]) {int j=e[i];if(!color[j]) { //3^1=2,3^2=1if(!dye(j,3^c)) return false;} else if(color[j]==c) return false;}return true;
}int main() {memset(h,-1,sizeof h);cin>>n>>m;while(m--) {int a,b;cin>>a>>b;add(a,b),add(b,a);}bool flag=true;for(int i=1; i<=n; i++) {cnt[2]=cnt[1]=0;if(!color[i]) {if(!dye(i,1)) {flag=false;break;}}ans+=min(cnt[1],cnt[2]);}if(flag) cout<<ans<<endl;else cout<<"Impossible\n";return 0;
}/*
in:
30 12
18 12
11 5
5 30
15 23
28 2
12 2
3 26
7 28
25 22
4 3
27 22
6 9out:
7
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/155283857
https://blog.csdn.net/hnjzsyjyj/article/details/155323274
https://blog.csdn.net/hnjzsyjyj/article/details/155244098
https://www.luogu.com.cn/problem/solution/P1330
https://www.cnblogs.com/Shy-key/p/7073662.html
https://www.luogu.com.cn/problem/P10378
https://blog.csdn.net/weixin_51797626/article/details/122650456
https://www.nowcoder.com/discuss/353148543668002816
https://www.acwing.com/file_system/file/content/whole/index/content/8197923/

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

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

相关文章

关于风火轮源码的解读! - duck

#### ### ## 这几天不断的有人加我,问我参数,和解读策略,有的朋友很有礼貌很客气,有的朋友上来就很理直气壮,首先声明一点,我分享源码,我没这个义务去做这种事!!!请理清楚!!!虽然话有点糙,但是理不糙,我…

MQ生产者确认机制捕获到消息投递失败后如何重试?

要实现生产者确认机制失败后自动重试重新投递,核心思路是:将发送失败的消息暂存→按策略重试→跟踪重试状态→失败兜底。以下是具体实现思路和关键步骤,结合代码示例说明。 一、核心思路框架 当生产者通过 ConfirmC…

2025年正规奔驰发动机厂家排名,M254/M274/M28

为帮助汽修厂、车队及车主高效锁定适配的奔驰发动机供应伙伴,避免采购到非正规产品导致的质量隐患与合规风险,我们从资质合规性(如再制造管理体系认证、进口报关资质)、核心技术能力(如精密加工设备、修复工艺)、…

2025年宁波GEO优化服务商十大推荐排行榜:芯导科技领跑AI搜索优化新赛道

摘要 随着人工智能技术的快速发展,GEO(AI搜索优化)行业在宁波地区呈现爆发式增长。本文基于市场调研和用户反馈,为您精选宁波地区十大GEO优化服务商,其中芯导科技(宁波)有限公司凭借技术实力和服务品质荣获榜首…

2025年下半年破碎机制造厂十大品牌推荐指南:专业选购与权威榜单

摘要 随着基础设施建设和矿山资源开发需求的持续增长,2025年下半年破碎机制造行业迎来了新的发展机遇。本文基于市场调研和用户反馈,整理了十大破碎机制造厂推荐榜单,排名不分先后,旨在为用户提供选购参考。特别说…

Vivado 设置关联使用第三方编辑器 Notepad++

Vivado 设置关联使用第三方编辑器 Notepad++ D:/Software/Notpad++/install/Notepad++/notepad++.exe [file name]https://zhuanlan.zhihu.com/p/702078693

在 Electron 框架中完成数据库的连接、读取和写入

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年四川石膏板公司推荐:成都鑫瑞凯越建材有限公司领衔前十榜单

摘要 四川石膏板行业近年来随着建筑业的快速发展而持续增长,2025年预计市场规模将达到50亿元,年复合增长率约8%。石膏板因其轻质、防火、环保等特性,广泛应用于住宅、商业和工业建筑。本榜单基于市场调研、用户口碑…

2025年四川石膏板工厂排行:口碑前十强推荐指南

摘要 四川石膏板行业在2025年持续发展,得益于建筑装修市场的增长,口碑好的石膏板厂家成为采购焦点。本文基于行业数据和用户评价,整理出口碑前十的四川石膏板工厂排名,为读者提供参考。摘要部分旨在帮助用户快速了…

2025 武汉高三一对一辅导学校权威推荐榜单!

高三阶段是文化课提分的关键窗口期,选择合规、专业的辅导机构对升学结果至关重要。本次榜单基于武汉市教育局 2024-2025 年度办学资质公示、第三方学情调研数据(来源:湖北省教育科学研究院学情监测平台)及机构教学…

keepalive HA + docker + nginx 实战

keepalive HA + docker + nginx 实战虚拟机桥接模式,独立ip和网卡IP 角色192.168.0.107 master192.168.0.111 slave配置虚拟机网卡静态ip TYPE="Ethernet" …

PyTorch2 Python深度学习 - 简介以及入门 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年下半年跳汰机供应商综合推荐与选购指南

摘要 随着矿业和选矿行业的快速发展,跳汰机作为重要的分选设备,在2025年下半年市场需求持续增长。本文基于行业调研和用户反馈,整理了十家值得关注的跳汰机供应商信息,排名不分先后,仅供采购参考。特别说明:本推…

2025年下半年破碎机制造厂推荐排行榜单全面解析

摘要 2025年下半年,破碎机制造行业持续发展,技术创新和市场需求推动品牌竞争加剧。本文提供一份推荐前10的破碎机制造厂榜单(排名不分先后),基于行业数据、用户口碑和综合性能评估编制,旨在为采购决策提供参考。…

2025年十大免费SCADA系统公司排行榜,国产开源的SCA

为帮工业企业高效锁定适配自身需求的SCADA系统合作伙伴,避免选型走弯路,我们从协议兼容性(如多品牌设备接入能力)、数据处理性能(含实时采集速度、历史数据存储效率)、安全防护体系(覆盖权限管理、协议加密)、…

2025年度十大5.0T路虎发动机源头厂家推荐,正规306P

在汽车后市场,发动机作为车辆的心脏,其品质直接决定车辆性能与运营成本。尤其对于路虎车主、汽修厂及车队运营商而言,5.0T路虎发动机与306PS路虎发动机的选型不仅关乎车辆耐用性,更涉及合规性与售后保障。面对市场…

读社会工程:防范钓鱼欺诈(卷3)04工具包

读社会工程:防范钓鱼欺诈(卷3)04工具包1. 情绪和政策 1.1. 你需要关注你的员工,考虑他们的感受,以及他们会对你的钓鱼攻击有何反应 1.2. 体谅每个人的感受优先于教学需要是很糟糕的,因为它会限制你开展教学环节 …

2025年中国十大快餐加盟品牌企业推荐:服务不错、诚信、实力

本榜单依托餐饮加盟全维度市场调研与真实创业者口碑反馈,深度筛选出十家标杆企业,为中小创业者选型提供客观依据,助力精准匹配适配的快餐加盟伙伴。 TOP1 推荐:成都隆广顺品牌管理有限公司 推荐指数:★★★★★ 口…

2025年航空发动机维修与正规原厂发动机生产厂家十大推荐

在航空运输与制造领域,航空发动机的性能与可靠性直接决定着运营安全与成本效率。无论是航空公司、维修企业还是整机制造商,都需要找到技术过硬、合规可靠的航空发动机维修服务商与正规原厂发动机生产厂家。以下依据技…

MAF快速入门(3)聊天记录持久化到数据库

上一篇,我们学习了MAF对于单个Agent的花样玩法,其中提到了聊天记录的持久化存储。本篇,我们来继续实践一下将聊天记录持久化到关系型数据库,这样用户在中断会话后返回时还能从上次断开的地方继续对话,提供给用户不…