网络流DINIC算法(模板)
来源:互联网 发布:桌面主题软件哪个好 编辑:程序博客网 时间:2024/06/06 12:33
https://daniu.luogu.org/problem/show?pid=3376
代码
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<queue>using namespace std;const int maxx=10001;int n,m,s,t,flow=0;int be[maxx],ne[maxx*20],to[maxx*20],w[maxx*20],dep[maxx],e=1;void add(int x,int y,int z){to[++e]=y;ne[e]=be[x];be[x]=e;w[e]=z;}bool bfs(){queue<int> q;q.push(s);memset(dep,0,sizeof(dep));dep[s]=1;while(!q.empty()){int now=q.front();q.pop();for(int i=be[now];i;i=ne[i]){int go=to[i];if(!dep[go] && w[i]>0){//printf("%d~%d\n",go,w[i]);dep[go]=dep[now]+1;q.push(go);}}}return !dep[t]?0:1;}int dfs(int id,int mini){if(id==t || !mini)return mini;int flow,ret=0;for(int i=be[id];i;i=ne[i]){int go=to[i];if(w[i]>0 && dep[go] == dep[id]+1 && (flow=dfs(go,min(mini,w[i])))){w[i]-=flow;w[i^1]+=flow;ret+=flow;mini-=flow;}if(!mini)return ret;}return ret;}int dinic(){int ans=0;while(bfs()){while(1){int tmp=dfs(s,1e9);if(!tmp)break;ans+=tmp;//printf("%d\n",tmp);}}return ans;}int read(){char x;while((x=getchar())<'0' || x>'9');int u=x-'0';while((x=getchar())>='0' && x<='9')u=u*10+x-'0';return u;}int main(){#ifndef ONLINE_JUDGEfreopen("input.in","r",stdin);freopen("output.out","w",stdout);#endifint i,j,k;n=read();m=read();s=read();t=read();while(m--){i=read();j=read();k=read();add(i,j,k);add(j,i,0);}printf("%d",dinic());return 0;}
阅读全文
0 0
- 网络流DINIC算法(模板)
- 网络流Dinic算法模板(各种优化)
- 网络流Dinic算法详解及模板
- 网络流-Dinic算法详解与模板
- 网络流Dinic算法模板 POJ1273
- Dinic算法 P3376 【模板】网络最大流
- 最大网络流模板Dinic算法
- 网络流模板--dinic
- 网络流Dinic模板
- 【模板】dinic(网络流)
- {模板}网络流Dinic
- 网络流dinic模板
- dinic 网络流模板
- 网络流dinic模板
- 网络流Dinic模板
- 网络流(Dinic算法)
- 网络流(dinic算法)
- 【网络流算法模板】最大流:dinic模板
- final数据
- ubnutu32 ftp操作
- KMP算法
- HDU-2544-最短路
- No repository found containing:osgi.bundle,jp.gr.java_conf.ussiy.app.propedit,6.0.4-问题解决
- 网络流DINIC算法(模板)
- OpenJudge简单的整数划分问题两种方法(DFS)(动态规划0ms),全局题号7215,已AC
- 度量驱动运维
- PHP基础教程-08 整形变量
- 浏览器关闭,Session生命周期
- MapReduce的写法
- 霍夫曼编码
- [USACO3.3.2]Shopping Offers
- Vue 2.0 实战之仿Eleme WebApp SPA(学习)