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

网络流,最大流,EK算法

概念

最大流:

从源点流向汇点的最大流量

增广路:

一条从源点到汇点的所有边的剩余容量>=0的路径

残留网:

由网络中所有结点和剩余容量大于0的边构成的子图,这里的边包括有向边和其反向边

模板题:

洛谷p3376

code:

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
typedef long long LL;
const int N=2e2+10,M=5e3+10,INF=0x3f3f3f3f;
//id=1,从2,3开始配对
LL n,m,ne[M<<1],h[N],e[M<<1],c[M<<1],id=1,S,T;
LL mf[N],pre[N];
void add(int u,int v,int w){++id;e[id]=v;ne[id]=h[u];c[id]=w;h[u]=id;
}bool bfs(){//找增广路memset(mf,0,sizeof mf);mf[S]=INF;queue<int> q;q.push(S);while(q.size()){int u=q.front();q.pop();for(int i=h[u];i;i=ne[i]){LL v=e[i],w=c[i];if(!mf[v]&&w){mf[v]=min(mf[u],w);pre[v]=i;//存前驱边q.push(v);if(v==T){return true;}}}}return false;
}LL EK(){//累加可行流LL flow=0;while(bfs()){//更新残留网int v=T;while(v!=S){int i=pre[v];c[i]-=mf[T];c[i^1]+=mf[T];v=e[i^1];}flow+=mf[T];}return flow;
}int main(){cin.tie(nullptr)->sync_with_stdio(false);cin>>n>>m>>S>>T;for(int i=1;i<=m;i++){int u,v,w;cin>>u>>v>>w;add(u,v,w);add(v,u,0);}cout<<EK()<<endl;return 0;
}
http://www.zskr.cn/news/3389.html

相关文章:

  • 1.认识c语言
  • 当你发现是打表!!!
  • css背景
  • 2025.9.11 刷题日记
  • 水库运行综合管理平台
  • Nginx配置文件介绍
  • 各模态优势(可见光保留细节纹理,红外突出目标)
  • 眼下硬件是足够用的,最大的问题还是AI模型本身的能力不太够。没办法让硬件真正用起来,比如AI难以很好地控制灵巧手
  • 深入理解C语言---函数
  • Agent Sudo | Writeup | TryHackMe
  • UT_HASH
  • 学生信息管理系统案例初步分析报告
  • 初识pyhton:一些基础的知识(文件)
  • 配置win10、linux虚拟机ip
  • 测试工程师的核心竞争力是什么?绝不是点点点
  • 关于 ECT-OS-JiuHuaShan 框架的终极阐释
  • 20250904
  • 25fall 做题记录 - Amy
  • Python Flask框架学习总结(一)
  • [充电管理] 充电管理基本概念 - 充电类型
  • Spring AI vs LangChain4j
  • P7913 [CSP-S 2021] 廊桥分配
  • 2025权威榜单之公众号排版Top5(含效率对比与适用建议)
  • Java的变量和常量
  • 推荐7本书《MLIR编译器原理与实践》、《ONNX人工智能技术与开发实践》、《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》
  • virtuoso默认设置
  • Tarjan vDCC 缩点
  • VMware CentOS 7 `yum` 修复及 VMware Tools 安装问题复盘
  • 接口测试---Requests
  • LangChain大模型应用开发介绍