博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1149 PIGS
阅读量:5937 次
发布时间:2019-06-19

本文共 1370 字,大约阅读时间需要 4 分钟。

网络最大流

#include
#include
#include
#include
#include
#include
#include
using namespace std;const int maxn=2000+10;const int INF=0x7FFFFFFF;struct Edge{ int from,to,cap,flow;};vector
edges;vector
G[maxn];bool vis[maxn];int d[maxn];int cur[maxn];int numc[maxn];int numr[maxn];int K[maxn][105];int n,m,s,t;int N,M,A,LS;//求出层次网络bool BFS(){ memset(vis,0,sizeof(vis)); queue
Q; Q.push(s); d[s]=0; vis[s]=1; while(!Q.empty()) { int x=Q.front(); Q.pop(); for(int i=0; i
e.flow) { vis[e.to]=1; d[e.to]=d[x]+1; Q.push(e.to); } } } return vis[t];}//加边void AddEdge(int from,int to,int cap){ Edge r; r.from=from; r.to=to; r.cap=cap; r.flow=0; edges.push_back(r); Edge d; d.from=to; d.to=from; d.cap=0; d.flow=0; edges.push_back(d); m=edges.size(); G[from].push_back(m-2); G[to].push_back(m-1);}//每个阶段来一次DFS增广int DFS(int x,int a){ if(x==t||a==0) return a; int flow=0,f; for(int i=cur[x]; i
0) { e.flow+=f; edges[G[x][i]^1].flow-=f; flow+=f; a-=f; if(a==0) break; } } return flow;}//多个阶段,多次建立层次网络。int Maxflow(int ss,int tt){ int flow=0; while(BFS()) { memset(cur,0,sizeof(cur)); flow+=DFS(ss,INF); } return flow;}int main(){ int i,j; while(~scanf("%d%d",&M,&N)) { memset(K,0,sizeof(K)); edges.clear(); for(int i=0; i

 

转载于:https://www.cnblogs.com/zufezzt/p/4671484.html

你可能感兴趣的文章
asp.net mvc Post上传文件大小限制 (转载)
查看>>
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
查看>>
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
C语言中的随意跳转
查看>>
006-spring cloud gateway-GatewayAutoConfiguration核心配置-GatewayProperties初始化加载、Route初始化加载...
查看>>
WPF中如何将ListViewItem双击事件绑定到Command
查看>>
《聚散两依依》
查看>>
小tips:你不知道的 npm init
查看>>
The Beam Model:Stream & Tables翻译(上)
查看>>
领扣-191 位1的个数 Number of 1 Bits MD
查看>>
Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...
查看>>
Jmeter也能IP欺骗!
查看>>
JS获取字符串实际长度(包含汉字)的简单方法
查看>>
Rust 阴阳谜题,及纯基于代码的分析与化简
查看>>
ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
查看>>