【学习笔记】网络流

news/2026/1/19 8:45:02/文章来源:https://www.cnblogs.com/Ming3398/p/19499977

板子

P3376 【模板】网络最大流
#include<bits/stdc++.h>
#define inf 1e18
using namespace std;int n,m,s,t;
typedef long long LL;
const int N=210,M=1e4+10;
int h[N],to[M],w[M],ne[M],idx=1;
void add(int a,int b,int c){to[++idx]=b;ne[idx]=h[a];h[a]=idx;w[idx]=c;
}
int dep[N],now[N];
bool bfs(){for(int i=1;i<=n;i++){dep[i]=-1;now[i]=h[i];}queue<int> q;q.push(s);dep[s]=1;while(q.size()){int u=q.front();q.pop();for(int i=h[u];i;i=ne[i]){int v=to[i];if(w[i]&&dep[v]==-1){dep[v]=dep[u]+1;q.push(v);}}}return dep[t]!=-1;
}
LL dfs(int u,LL las){if(u==t) return las;LL ans=0;for(int i=now[u];i&&las;i=ne[i]){int v=to[i];now[u]=i;if(w[i]&&dep[u]+1==dep[v]){int res=dfs(v,min(las,(LL)w[i]));ans+=res;las-=res;w[i]-=res;w[i^1]+=res;}}if(ans==0) dep[u]=-1;return ans;
}
LL Dinic(){LL ans=0;while(bfs()) ans+=dfs(s,inf);return ans;
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m>>s>>t;while(m--){int a,b,c;cin>>a>>b>>c;add(a,b,c);add(b,a,0);}cout<<Dinic()<<"\n";return 0;
}
P3381 【模板】最小费用最大流
#include<bits/stdc++.h>
#define inf 1e9+10
using namespace std;
const int N=5010,M=1e5+10;int n,m,s,t;
int h[N],to[M],w[M],c[M],ne[M],idx=1;
int dis[N],vis[N];
int now[N];
void add(int u,int v,int ww,int cc){to[++idx]=v;w[idx]=ww;ne[idx]=h[u];h[u]=idx;c[idx]=cc;
}
bool bfs(){for(int i=1;i<=n;i++){now[i]=h[i];dis[i]=inf;}queue<int> q;q.push(s);dis[s]=0;vis[s]=1;while(q.size()){int u=q.front();q.pop();vis[u]=0;for(int i=h[u];i;i=ne[i]){int v=to[i];if(w[i]&&dis[v]>dis[u]+c[i]){dis[v]=dis[u]+c[i];if(vis[v]) continue;vis[v]=1;q.push(v);}}}return dis[t]!=inf;
}
int cosn=0;
int dfs(int u,int las){if(u==t) return las;int ans=0;vis[u]=1;for(int i=now[u];i&&las;i=ne[i]){int v=to[i];now[u]=i;if(dis[v]==dis[u]+c[i]&&w[i]&&!vis[v]){int res=dfs(v,min(las,w[i]));ans+=res;las-=res;w[i]-=res;w[i^1]+=res;cosn+=res*c[i];}}vis[u]=0;if(ans==0) dis[u]=inf;return ans;
}
int Dinic(){int ans=0;while(bfs()) ans+=dfs(s,inf);return ans;
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m>>s>>t;while(m--){int u,v,w,c;cin>>u>>v>>w>>c;add(u,v,w,c);add(v,u,0,-c);}cout<<Dinic()<<" ";cout<<cosn<<"\n";return 0;
}
P14578 【模板】无源汇上下界可行流
#include<bits/stdc++.h>
#define inf 1e9
using namespace std;
const int N=1010,M=(1e4+2*N)*2;int n,m,s,t;
int h[N],ne[M],w[M],to[M],idx=1;
int beg[M];
int in[N];
void add(int a,int b,int c){to[++idx]=b;ne[idx]=h[a];h[a]=idx;w[idx]=c;
}
int Graph(){for(int i=1;i<=m;i++){int a,b,l,r;cin>>a>>b>>l>>r;r-=l;add(a,b,r);add(b,a,0);in[b]+=l;in[a]-=l;beg[i]=l;}s=n+1;t=n+2;int ans=0;for(int i=1;i<=n;i++){if(in[i]>0){add(s,i,in[i]);add(i,s,0);ans+=in[i];		}else{add(i,t,-in[i]);add(t,i,0);}}return ans;
}
int dep[N],now[N];
bool bfs(){for(int i=0;i<N;i++){dep[i]=-1;now[i]=h[i];}queue<int> q;q.push(s);dep[s]=1;while(q.size()){int u=q.front();q.pop();for(int i=h[u];i;i=ne[i]){int v=to[i];if(w[i]&&dep[v]==-1){dep[v]=dep[u]+1;q.push(v);}}}return dep[t]!=-1;
}
int dfs(int u,int las){if(u==t) return las;int ans=0;for(int i=now[u];i&&las;i=ne[i]){int v=to[i];now[u]=i;if(w[i]&&dep[v]==dep[u]+1){int res=dfs(v,min(las,w[i]));las-=res;ans+=res;w[i]-=res;w[i^1]+=res;}}if(ans==0) dep[u]=-1;return ans;
}
int Dinic(){int ans=0;while(bfs()) ans+=dfs(s,inf);return ans;
}
int main(){cin>>n>>m;int num=Graph();int ans=Dinic();if(num!=ans) cout<<"No\n";else{cout<<"Yes\n";for(int i=1;i<=m;i++) cout<<beg[i]+w[i*2+1]<<"\n";}return 0;
}
P14579 【模板】有源汇上下界最大流
#include<bits/stdc++.h>
#define inf 1e9+10
using namespace std;
const int N=1010,M=(1e4+N*2)*2;int n,m,s,t,ss,tt;
int in[N];
int h[N],to[M],w[M],ne[M],idx=1;
int add(int a,int b,int c){to[++idx]=b;w[idx]=c;ne[idx]=h[a];h[a]=idx;return idx;
}
int id;
int Graph(){for(int i=1;i<=m;i++){int a,b,l,r;cin>>a>>b>>l>>r;r-=l;add(a,b,r);add(b,a,0);in[b]+=l;in[a]-=l;}add(t,s,inf);id=add(s,t,0);ss=n+1,tt=n+2;int ans=0;for(int i=1;i<=n;i++){if(in[i]>0){ans+=in[i];add(ss,i,in[i]);add(i,ss,0);}else{add(i,tt,-in[i]);add(tt,i,0);}}return ans;
}
int dep[N],now[N];
bool bfs(int s,int t){for(int i=0;i<N;i++){dep[i]=-1;now[i]=h[i];}queue<int> q;q.push(s);dep[s]=1;while(q.size()){int u=q.front();q.pop();for(int i=h[u];i;i=ne[i]){int v=to[i];if(w[i]&&dep[v]==-1){dep[v]=dep[u]+1;q.push(v);}}}return dep[t]!=-1;
}
int dfs(int u,int las,int t){if(u==t) return las;int ans=0;for(int i=now[u];i&&las;i=ne[i]){int v=to[i];now[u]=i;if(w[i]&&dep[v]==dep[u]+1){int res=dfs(v,min(las,w[i]),t);las-=res;ans+=res;w[i]-=res;w[i^1]+=res;}}if(ans==0) dep[u]=-1;return ans;
}
int Dinic(int s,int t){int ans=0;while(bfs(s,t)) ans+=dfs(s,inf,t);return ans;
}
int main(){cin>>n>>m>>s>>t;int num=Graph();int ans=Dinic(ss,tt);if(num!=ans) cout<<"N\n";else{int ans=w[id];w[id]=w[id^1]=0;cout<<ans+Dinic(s,t)<<"\n";}return 0;
}
P14580 【模板】有源汇上下界最小流
#include<bits/stdc++.h>
#define inf 1e9+10
using namespace std;
const int N=1010,M=(1e4+N*2)*2;int n,m,s,t,ss,tt;
int in[N];
int h[N],to[M],w[M],ne[M],idx=1;
int add(int a,int b,int c){to[++idx]=b;w[idx]=c;ne[idx]=h[a];h[a]=idx;return idx;
}
int id;
int Graph(){for(int i=1;i<=m;i++){int a,b,l,r;cin>>a>>b>>l>>r;r-=l;add(a,b,r);add(b,a,0);in[b]+=l;in[a]-=l;}add(t,s,inf);id=add(s,t,0);ss=n+1,tt=n+2;int ans=0;for(int i=1;i<=n;i++){if(in[i]>0){ans+=in[i];add(ss,i,in[i]);add(i,ss,0);}else{add(i,tt,-in[i]);add(tt,i,0);}}return ans;
}
int dep[N],now[N];
bool bfs(int s,int t){for(int i=0;i<N;i++){dep[i]=-1;now[i]=h[i];}queue<int> q;q.push(s);dep[s]=1;while(q.size()){int u=q.front();q.pop();for(int i=h[u];i;i=ne[i]){int v=to[i];if(w[i]&&dep[v]==-1){dep[v]=dep[u]+1;q.push(v);}}}return dep[t]!=-1;
}
int dfs(int u,int las,int t){if(u==t) return las;int ans=0;for(int i=now[u];i&&las;i=ne[i]){int v=to[i];now[u]=i;if(w[i]&&dep[v]==dep[u]+1){int res=dfs(v,min(las,w[i]),t);las-=res;ans+=res;w[i]-=res;w[i^1]+=res;}}if(ans==0) dep[u]=-1;return ans;
}
int Dinic(int s,int t){int ans=0;while(bfs(s,t)) ans+=dfs(s,inf,t);return ans;
}
int main(){cin>>n>>m>>s>>t;int num=Graph();int ans=Dinic(ss,tt);if(num!=ans) cout<<"N\n";else{int ans=w[id];//cout<<ans<<"\n";w[id]=w[id^1]=0;cout<<ans-Dinic(t,s)<<"\n";}return 0;
}

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

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

相关文章

Open-AutoGLM实战指南:自动打卡健康码,1块钱试用

Open-AutoGLM实战指南&#xff1a;自动打卡健康码&#xff0c;1块钱试用 你是不是也遇到过这样的情况&#xff1f;每天早上刚到社区办公室&#xff0c;第一件事就是打开手机&#xff0c;登录各种政务App&#xff0c;手动填报居民的体温、行程、疫苗接种情况……一来二去&#…

从零实现精准抠图|CV-UNet大模型镜像使用全攻略

从零实现精准抠图&#xff5c;CV-UNet大模型镜像使用全攻略 1. 引言&#xff1a;为什么需要高效抠图解决方案&#xff1f; 在图像处理、电商展示、影视后期和AI生成内容&#xff08;AIGC&#xff09;等场景中&#xff0c;精准抠图是不可或缺的基础能力。传统手动抠图效率低、…

ROFL-Player:英雄联盟回放数据分析的终极解决方案

ROFL-Player&#xff1a;英雄联盟回放数据分析的终极解决方案 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为无法深入分析英雄联…

极致静音体验:5分钟掌握FanControl智能风扇控制技巧

极致静音体验&#xff1a;5分钟掌握FanControl智能风扇控制技巧 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…

Mem Reduct内存优化终极指南:5分钟让老旧电脑焕然一新

Mem Reduct内存优化终极指南&#xff1a;5分钟让老旧电脑焕然一新 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 还…

电商评论情感分析:bert-base-chinese案例

电商评论情感分析&#xff1a;bert-base-chinese案例 1. 技术背景与问题提出 在电商平台日益发展的今天&#xff0c;用户评论已成为影响消费者决策和品牌声誉的重要因素。海量的非结构化文本数据中蕴含着丰富的情感倾向信息&#xff0c;如何高效、准确地从中提取用户对商品的…

魔兽世界API工具完全指南:从宏命令创建到插件开发的全流程解析

魔兽世界API工具完全指南&#xff1a;从宏命令创建到插件开发的全流程解析 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 还在为魔兽世界复杂的技能组合而烦恼吗&#xff1f;想要一…

OpenCV实战:构建高性能艺术风格迁移系统的关键技巧

OpenCV实战&#xff1a;构建高性能艺术风格迁移系统的关键技巧 1. 技术背景与核心挑战 在数字图像处理领域&#xff0c;艺术风格迁移一直是备受关注的技术方向。传统方法依赖深度神经网络模型&#xff0c;通过训练大量艺术画作数据来学习风格特征。这类方案虽然效果惊艳&…

天龙八部GM工具全面使用手册:从入门到精通

天龙八部GM工具全面使用手册&#xff1a;从入门到精通 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 天龙八部GM工具是一款专为单机版本游戏设计的专业管理助手&#xff0c;为游戏管理员提供全方位的…

针对紧凑型穿戴产品的SSD1306自定义字体加载方法详解

SSD1306在紧凑型穿戴设备中的自定义字体实战&#xff1a;从原理到高效渲染你有没有遇到过这样的场景&#xff1f;手上的智能戒指要显示“低电量”提示&#xff0c;可标准ASCII字符里没有电池图标&#xff1b;你的健康手环想用中文提醒“心率异常”&#xff0c;却发现MCU的Flash…

3行代码实现:OpenDataLab MinerU智能解析学术论文图表

3行代码实现&#xff1a;OpenDataLab MinerU智能解析学术论文图表 你是否还在为学术论文中的复杂图表、公式和多语言混排内容难以提取而困扰&#xff1f;基于 OpenDataLab/MinerU2.5-1.2B 模型构建的“智能文档理解”镜像&#xff0c;提供了一种轻量级、高精度的解决方案。该模…

MinerU实战教程:产品说明书智能问答机器人开发

MinerU实战教程&#xff1a;产品说明书智能问答机器人开发 1. 引言 随着企业数字化转型的加速&#xff0c;大量非结构化文档&#xff08;如产品说明书、技术手册、合同文件等&#xff09;亟需智能化处理。传统OCR工具虽能提取文字&#xff0c;但在理解版面结构、语义关联和上…

PDown百度网盘下载器:2025年终极免费高速下载解决方案

PDown百度网盘下载器&#xff1a;2025年终极免费高速下载解决方案 【免费下载链接】pdown 百度网盘下载器&#xff0c;2020百度网盘高速下载 项目地址: https://gitcode.com/gh_mirrors/pd/pdown 还在为百度网盘蜗牛般的下载速度而烦恼&#xff1f;PDown百度网盘下载器通…

DeepSeek-R1部署进阶:多并发请求处理优化方案

DeepSeek-R1部署进阶&#xff1a;多并发请求处理优化方案 1. 背景与挑战&#xff1a;本地大模型的并发瓶颈 随着轻量化大模型在边缘设备和本地环境中的广泛应用&#xff0c;如何在资源受限的条件下实现高效、稳定的多用户服务成为关键问题。DeepSeek-R1-Distill-Qwen-1.5B 作…

ROFL-Player:英雄联盟回放数据深度解析利器

ROFL-Player&#xff1a;英雄联盟回放数据深度解析利器 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄联盟回放文件无法直接…

Qwen3-VL-8B新手指南:云端免配置环境,5分钟快速入门

Qwen3-VL-8B新手指南&#xff1a;云端免配置环境&#xff0c;5分钟快速入门 你是不是也和我一样&#xff0c;是个地地道道的文科生&#xff1f;平时写写文章、做做策划、搞搞创意&#xff0c;对AI技术一直很感兴趣&#xff0c;但一看到“命令行”“代码”“Linux”这些词就头大…

魔兽世界宏命令与API工具:从技能自动化到插件开发的完整解决方案

魔兽世界宏命令与API工具&#xff1a;从技能自动化到插件开发的完整解决方案 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 还在为魔兽世界复杂的技能循环而头疼吗&#xff1f;想要…

Universal Pokemon Randomizer ZX 终极宝可梦随机化工具完整使用教程

Universal Pokemon Randomizer ZX 终极宝可梦随机化工具完整使用教程 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-pokemon-random…

天龙八部GM工具:从游戏管理员到世界创造者的进阶之路

天龙八部GM工具&#xff1a;从游戏管理员到世界创造者的进阶之路 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 还在为单机版游戏管理而头疼吗&#xff1f;想让你的天龙八部世界更加丰富多彩吗&…

终极指南:在Linux上一键部署macOS虚拟机的完整方案

终极指南&#xff1a;在Linux上一键部署macOS虚拟机的完整方案 【免费下载链接】OneClick-macOS-Simple-KVM Tools to set up a easy, quick macOS VM in QEMU, accelerated by KVM. Works on Linux AND Windows. 项目地址: https://gitcode.com/gh_mirrors/on/OneClick-macO…