网络流是啥不用我说了吧

增广路定理不用我说了吧

Dinic就是分层然后只在层间转移,然后就特别快,$$O(N^2M)$$

伪代码:

function dinic
int flow = 0 ;
while bfs() do
memsets()
while int val = dfs() do
flow += val;
return flow
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std ;
#define MAXN 1000005 int head[MAXN],ver[MAXN*4],edge[MAXN*4],Next[MAXN*4],tot=-1,s,t ;
int dep[MAXN],cur[MAXN] ;
int n,m ;
void init(){
tot = -1 , memset(head,-1,sizeof(head)),memset(Next,-1,sizeof(Next)) ;
}
void _add(int u,int v,int w){
ver[++tot]=v,
edge[tot]=w,
Next[tot]=head[u],
head[u]=tot ;
}
void add(int u,int v,int w){
_add(u,v,w),
_add(v,u,0) ;
}
int bfs(){
memset(dep,0,sizeof(dep)) ;
queue<int> Q ;while(!Q.empty()) Q.pop() ;
Q.push(s) ; dep[s] = 1 ;
while(!Q.empty()){ int v=Q.front() ; Q.pop() ;
for(int i=head[v];i!=-1;i=Next[i]){
//printf("Bfs: at dot %d\n",ver[i]) ;
//for(int j=1;j<=MAXN*10;++j) ;
if(dep[ver[i]] == 0 && edge[i]>0)
dep[ver[i]] = dep[v]+1 , Q.push(ver[i]) ;
}
}
if(!dep[t]) return 0 ;
return 1 ;
}
int dfs(int u,int f){
if(u == t) return f ;
for(int& i=cur[u];i!=-1;i=Next[i]){
if(dep[ver[i]] == dep[u]+1 && edge[i]!=0){
int di = dfs(ver[i],min(edge[i],f)) ;
if(di > 0){
edge[i] -= di , edge[i^1] += di ;
return di ;
}
}
}
return 0 ;
}
int Dinic(){
int flow = 0 , d = 0 ;
while(bfs()){
for(int i=1;i<=n;++i) cur[i] = head[i] ;
while(d = dfs(s,0x3f3f3f3f)) flow += d ;
}
return flow ;
}
int main(){
init() ;
scanf("%d%d%d%d",&n,&m,&s,&t) ;
for(int i=1;i<=m;++i){
int x,y,z ; scanf("%d%d%d",&x,&y,&z) ; add(x,y,z) ;
}
printf("%d\n",Dinic()) ;
}

最新文章

  1. .NET Task揭秘(一)
  2. MySQL 添加列, 修改列, 删除列
  3. jQuery插件之ajaxFileUpload
  4. Effective C++ -----条款35:考虑virtual函数以外的其他选择
  5. 如何通过jquery隐藏和显示元素
  6. Unix/Linux下如何使用Vi编辑器
  7. powerdesign的license key到期,解决办法
  8. codeforces 721C (拓扑+dp)
  9. Nodejs简单验证码ccap安装
  10. leetcode第一刷_Spiral Matrix II
  11. ACdream 1195 Sudoku Checker (暴力)
  12. Android - Daydream 互动屏保
  13. 180815 Python自学成才001
  14. vue数据变化的监控是如何做到的
  15. js求最大值最小值
  16. mybatis中使用Integer类型的参数&lt;if&gt;判断问题
  17. Spring mvc 接口枚举类型数据格式化处理
  18. js遍历对象所有的属性名称和值
  19. jsxyhelu的GitHub使用方法
  20. Bugku-CTF之web2-听说聪明的人都能找到答案

热门文章

  1. ssh-keygen 签名ca证书
  2. windows2000 堆溢出 利用原理
  3. 目标检测评价标准(mAP, 精准度(Precision), 召回率(Recall), 准确率(Accuracy),交除并(IoU))
  4. java课程课后作业190530之找水王
  5. VBA代码优化及其他设置操作
  6. Java多线程之并发包,并发队列
  7. [Qt5] QSlider设置步长
  8. UVALive 3983 捡垃圾的机器人 DP
  9. == 与 equals区别(HashCode方法)
  10. 吴裕雄--天生自然MySQL学习笔记:MySQL ALTER命令