首页 > 代码库 > 【模板】最大流之Ford-Fulkerson算法
【模板】最大流之Ford-Fulkerson算法
这个好像跟EK算法的本质差不多,不过一个dfs,一个bfs,总体看来一般用bfs会好一点。
程序:
#include<iostream> #include<cstdio> #include<vector> #include<cstring> using namespace std; struct edge{ int from,to,cap,flow,nod; }; vector<edge>g[20000]; int s,t; bool vis[20000]; void add(int u,int v,int w) { g[u].push_back((edge){u,v,w,0,g[v].size()}); g[v].push_back((edge){v,u,0,0,g[u].size()-1}); } int dfs(int now,int maxx) { if (now==t) return maxx; vis[now]=true; for (int i=0;i<g[now].size();i++) { edge e=g[now][i]; if ((!vis[e.to])&&(e.cap>e.flow)) { int d=dfs(e.to,min(maxx,e.cap-e.flow)); if (d>0) { e.flow+=d; g[now][i]=e; g[e.to][e.nod].flow-=d; return d; } } } return 0; } int main() { int m,a,b,c,n; scanf("%d%d%d%d",&n,&m,&s,&t); for (int i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); add(a,b,c); } int ans=0; for (;;) { memset(vis,0,sizeof vis); int sum=dfs(s,210000000); if (sum==0) break; ans+=sum; } printf("%d\n",ans); return 0; }
【模板】最大流之Ford-Fulkerson算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。