图论
文章平均质量分 94
AbelTomato
已识乾坤大,犹怜草木青
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷P3953 [NOIP 2017 提高组] 逛公园
摘要 题目P3953 [NOIP2017提高组] 逛公园要求计算从1号点到N号点的路径数,路径长度不超过最短路d加上K。需要处理两种特殊情况:1) 存在边权为0的环时输出-1;2) 路径数对P取模。 解题思路: 预处理反向图,计算各点到N的最短距离dis[u] 使用记忆化搜索,记录状态(剩余可走余量,当前节点) 剪枝:当剩余余量不足以到达终点时终止搜索 判断0权环:通过Tarjan算法找强连通分量,检查是否存在边权和为0的环 算法结合了最短路、记忆化搜索和图论知识,时空复杂度主要取决于K的大小。原创 2025-12-02 07:41:15 · 951 阅读 · 0 评论 -
洛谷P5295 [北京省选集训2019] 图的难题
题目摘要: 本文研究了P5295 [北京省选集训2019] 图的难题,该问题要求判断给定的无向图能否将边划分为两个森林(即白色和黑色边子图均无环)。通过Nash-Williams定理,该条件等价于验证对于所有非空顶点子集S,满足|E(S)|≤2(|S|-1)。作者将其转化为最大权闭合子图问题,通过构建特殊网络流模型(边节点连接顶点节点,容量分别为1和2),利用最小割算法进行判断。关键结论指出:若最小割值≥m+2则有解。为优化效率,采用退流技术减少计算量,最终通过Dinic算法实现。代码部分展示了网络流模型的原创 2025-11-30 00:36:11 · 1394 阅读 · 0 评论 -
洛谷P5030 长脖子鹿放置(二分图最大匹配+网络流)
题目摘要:P5030 长脖子鹿放置 题目要求在一个N×M的棋盘上放置尽可能多的长脖子鹿(类似中国象棋的马,但按"目"字攻击且无"别马腿"规则),且不能互相攻击。部分格子禁止放置。解题思路是将棋盘转化为二分图,利用König定理将问题转化为求最大匹配,通过最大流算法求解。具体实现中,按行奇偶性构建二分图,使用Dinic算法计算最大流,最终答案为总可用格子数减去最大匹配数。输入包含棋盘尺寸和禁止位置,输出最多可放置的长脖子鹿数量。原创 2025-11-29 08:11:18 · 967 阅读 · 0 评论 -
洛谷P2857 [USACO06FEB] Steady Cow Assignment G
摘要: 题目描述将N头牛分配到B个容量有限的谷仓中,每头牛对谷仓有偏好排序。要求找到一种分配方案,使得所有牛被分配的谷仓排名范围(最高与最低排名之差+1)最小。解决方案采用网络流建模:将牛和谷仓分别作为源点和汇点,通过二分枚举可能的排名范围,利用Dinic算法验证当前范围是否可行。时间复杂度为O(NB²√(N+B)logB),由于B较小(B≤20),实际运行效率可接受。最终输出满足条件的最小排名范围值。原创 2025-11-29 08:09:50 · 849 阅读 · 0 评论 -
洛谷P1361 小M的作物
本文探讨了洛谷题目P1361"小M的作物"的解法。该问题要求将n种作物分配到两块耕地A或B中,以获得最大收益。每种作物在不同耕地有不同收益,某些作物组合还能带来额外收益。解题思路是将问题转化为最小割模型:建立源点s和汇点t,作物节点分别与s和t相连,边权为在A或B的收益;组合收益通过建立虚拟节点处理。最终最大收益等于总可能收益减去最小割值。类似问题如P4313和P1646也可用此方法解决。原创 2025-11-28 07:29:24 · 701 阅读 · 0 评论 -
洛谷P1345 [USACO5.4] 奶牛的电信 Telecowmunication
摘要:题目要求通过删除最少数量的电脑节点,使得给定的两个电脑节点$c1$和$c2$无法通信。采用网络流算法,通过将每个电脑节点拆分为输入和输出节点,并在它们之间建立边权为1的边($c1$和$c2$对应的边权为无穷大),将问题转化为求最小割。最终使用Dinic算法求解最大流,即得到需要删除的最小电脑数量。原创 2025-11-27 08:21:22 · 1008 阅读 · 0 评论 -
最大流(Dinic算法)
本文介绍了Dinic算法作为Edmonds-Karp算法的优化版本。Dinic通过构建分层图,在一次BFS后使用DFS同时增广多条路径,解决了Edmonds-Karp算法效率低下的问题。关键优化包括:层级限制(level)、当前弧优化(cur)以及边的编号技巧(异或1获取反向边)。算法时间复杂度为O(min(n^{2/3},m^{1/2})m),显著提升了最大流问题的求解效率。文中提供了完整的C++实现代码,并详细解释了各优化细节的实现原理。原创 2025-11-26 07:24:52 · 1804 阅读 · 0 评论 -
最大流(Edmonds-Karp算法)
摘要:本文介绍了网络流中的最大流问题及其解决方法。作者因解题需求开始学习最大流算法,详细解释了流网络、流、割等基本概念,并阐述了最大流最小割定理的等价性。重点讲解了残量图构建和增广路径的思想,分析了Ford-Fulkerson方法及其改进版Edmonds-Karp算法的实现原理(使用BFS寻找最短增广路以保证O(VE²)复杂度)。最后提供了基于Edmonds-Karp算法的C++代码实现模板,并阐明反向边在流量调整中的关键作用。全文从理论基础到实践实现,系统性地介绍了最大流问题的求解方法。原创 2025-11-21 00:07:07 · 1431 阅读 · 0 评论
分享