网络流Dinic

news/2025/2/26 9:38:10/文章来源:https://www.cnblogs.com/-include-lmt/p/18737802

Dinic 算法 一次可以累加多条增广路的流量
表头 head[u]:存u 点的第一条出边
深度 dep[u]:存u 点所在的图层
当前弧 cur[u]:存u 点的当前出边

  1. bfs0对点分层,找增广路
  2. dfs() 多路增广
    • (1) 搜索顺序优化 (分层限制搜索深度)
    • (2)当前弧优化 (剪枝)
    • (3)剩余流量优化 (剪枝)
    • (4)残枝优化(剪枝)
  3. dinic() 累加可行流
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
int head[N], to[N], nxt[N], w[N];
int tot;
void add(int a, int b, int c)
{nxt[++tot] = head[a], head[a] = tot, to[tot] = b, w[tot] = c;swap(a, b), c = 0;nxt[++tot] = head[a], head[a] = tot, to[tot] = b, w[tot] = c;
}
int dep[N];
int S, T;
bool bfs()
{memset(dep, 0, sizeof(0));queue<int> q;q.push(S);dep[S] = 1;while (q.size()){int u = q.front();q.pop();for (int i = head[u]; i; i = nxt[i]){int v = to[i];if (!dep[v] && w[i]){q.push(v);dep[v] = dep[u] + 1; // 深度加一if (v == T)return 1;}}}return 0;
}
int cur[N];
long long dfs(int u, int mf) // 多路增广,mf可增上限
{if (u == T)return mf;long long sum = 0;for (int i = cur[u]; i; i = nxt[i]){cur[u] = i; // 当前弧优化,如果流满等同于把它从残量网络中删掉int v = to[i];if (dep[v] == dep[u] + 1 && w[i]) // 如果前一个点别删除了就没有必要了{long long f = dfs(v, min(mf, w[i]));w[i] -= f;w[i ^ 1] += f;sum += f;mf -= f;if (mf == 0)break;}}if (sum == 0)dep[u] = 0; // 该点没有必要了return sum;
}
long long dinic()
{long long flow = 0;while (bfs()){memcpy(cur, head, sizeof(0));flow += dfs(S, 1e8);}return flow;
}
int main()
{return 0;
}

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

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

相关文章

毕设的踩坑之路

main()函数 在main()函数中调用 QMessageBox 之前一定要创建 QApplication 对象, 使用 QWidget 之前要创建 QApplication 对象. 不然会程序崩溃. 下面是笔者原先的代码: 之前是因为数据库等一切正常, 所以没有触发到连接数据库失败的 QMessageBox 消息. 后来有一次连接的时候数…

表格内cron表达式转成需要的时间格式

1.表格内添加 :formatter=""<el-table-columnlabel="监视周期"align="center"prop="corn":formatter="cornFormat"/>2.方法// 频率corn转时间格式cornFormat(row, column) {let str = row.corn;// let str = row.corn…

盲派八字推理 API 数据接口

盲派八字推理 API 数据接口 AI / 八字命理 基于八字命理分析 命理分析 / 八字运势。1. 产品功能基于八字命理以及盲派八字理论解析个人运势; 提供详细的大运分析,覆盖学业、婚姻、财运、健康等领域; 分析个人运势,包括学业、婚姻、财运、健康等方面的解读; 智能解读人生关…

2.25 CW 模拟赛 T4. 博弈论

前言 本来并不打算补这个题, 但是发现想拿到更好的分数, 应该对这题有更多的分析 至于 \(\rm{T3}\) , 除了让我知道分拆数类型的状态压缩 \(\rm{dp}\) 还可以乱搞, 没有什么意义, 现在也不太可能拥有这个水平 思路题意 给定一个序列A and B\textrm{A and B}A and B 每次可以在序…

20220226

沪锌 形态待验证 胶系看之前分析即可。后市看方向 17600-18200 https://www.cnblogs.com/lyonlee/p/18729353

2. 在Linux 当中安装 Nginx(13步) 下载安装启动(详细说明+附加详细截图说明)

2. 在Linux 当中安装 Nginx(13步) 下载&安装&启动(详细说明+附加详细截图说明) @目录2. 在Linux 当中安装 Nginx(13步) 下载&安装&启动(详细说明+附加详细截图说明)1. 在 Linxu 下安装 Nginx 的详细步骤2. 最后:1. 在 Linxu 下安装 Nginx 的详细步骤 Nginx 官…

AI应用实战课学习总结(11)用RNN做时序预测

本文介绍了RNN循环神经网络的基本概念 和 各种神经网络(DNN、CNN、RNN)的对比,最后介绍了如何基于RNN来做时序预测的案例。大家好,我是Edison。 最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。 今天是我们的第11站,一起了解RNN循环神经网络的…

微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章

2025年2月25日,.NET团队在博客上宣布了.NET 10 Preview 1的正式发布,文章参见:https://devblogs.microsoft.com/dotnet/dotnet-10-preview-1/,标志着.NET框架在跨平台开发领域迈出了重要一步。这一新版本在.NET Runtime、SDK、库、C#、ASP.NET Core、Blazor以及.NET MAUI等…

推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!

随着互联网技术的飞速发展,Web应用越来越普及,前端页面也越来越复杂。为了确保产品质量,UI自动化测试成为了开发过程中不可或缺的一环。然而,传统的UI自动化测试工具往往存在学习成本高、维护困难等问题。特别是UI 自动化脚本里往往到处都是选择器,比如 #ids、data-test、…

无需破解,国际版也很香!

随着短视频平台的迅速崛起,各类短视频内容如搞笑片段、生活窍门、旅行日志和教学视频层出不穷,几乎覆盖了所有主题和风格。大众对视频质量的要求日益提高,因此选择一款专业的视频编辑软件显得尤为重要。用户可以利用多层时间线进行剪辑,添加特效与转场,调整色彩和音频,甚…

读DAMA数据管理知识体系指南05数据治理(中)

数据治理需支持业务战略,明确治理责任,评估能力,制定战略框架,参与变革与问题管理,确保法规遵从,通过监控和评估提升数据质量和治理效果。1. 规划组织的数据治理 1.1. 数据治理工作必须支持业务战略和目标1.1.1. 一个组织的业务战略和目标影响着组织的数据战略,以及数据…