hdu 3549 Flow Problem 增广路ford-fullkerson算法
来源:互联网 发布:网络翻墙工具app 编辑:程序博客网 时间:2024/06/05 02:27
#include<stdio.h>#include<string.h>#include<queue>#include<vector>#include<algorithm>using namespace std;const int N=1024*2;const int inf=1<<24;struct arc{ int c,f;} g[N][N];int n,m,i,j,u,v,c,f;int abs(int x){ if(x<0) return -x; else return x;}void ford(){ int p[N],a[N],flag[N]; queue<int>q; while(1) { memset(p,0xff,sizeof(p)); memset(a,0xff,sizeof(a)); memset(flag,0xff,sizeof(flag)); while(!q.empty()) q.pop(); q.push(0); flag[0]=0; p[0]=0; a[0]=inf; while(!q.empty()&&flag[n-1]==-1) { u=q.front(); q.pop(); for(i=0; i<n; i++) { if(flag[i]==-1) { if(g[u][i].c<inf&&g[u][i].f<g[u][i].c) { flag[i]=0; p[i]=u; a[i]=min(a[u],g[u][i].c-g[u][i].f); q.push(i); } else if(g[i][u].c<inf&&g[i][u].f>0) { flag[i]=0; p[i]=-u; a[i]=min(a[u],g[i][u].f); q.push(i); } } } flag[u]=1; } //printf("%d %d\n",flag[n-1],a[n-1]); if(flag[n-1]==-1||a[n-1]==0) break; int k1=n-1,k2=abs(p[k1]); int add=a[n-1]; while(1) { if(g[k2][k1].f<inf) g[k2][k1].f+=add; else g[k1][k2].f-=add; if(k2==0) break; k1=k2; k2=abs(p[k2]); } } int flow=0; for(i=0; i<n; i++) if(g[0][i].f<inf) flow+=g[0][i].f; printf("%d\n",flow);}int main(){ int _; scanf("%d",&_); for(int k=1; k<=_; k++) { scanf("%d%d",&n,&m); for(i=0; i<n; i++) for(j=0; j<n; j++) g[i][j].c=g[i][j].f=inf; for(i=0; i<m; i++) { scanf("%d%d%d",&u,&v,&c); u--; v--; if(g[u][v].c==inf) g[u][v].c=c; else g[u][v].c+=c; g[u][v].f=0; } printf("Case %d: ",k); ford(); } return 0;}
0 0
- hdu 3549 Flow Problem 增广路ford-fullkerson算法
- hdu 3549 Flow Problem(网络流增广路径主要算法)
- HDU 3549 Flow Problem 最大流 最小增广路 EK算法 传说中的入门算法
- HDU 3549 Flow Problem 最大流 最小增广路 DINIC算法 也是46MS
- hdu 3549 Flow Problem(图论:网络流增广路)
- HDU 3549 Flow Problem (Ford-Fulkerson&Dinic)
- HDU 3549 Flow Problem【最大流入门题】【Ford-Fulkerson算法】【Dinic算法】【ISAP算法】
- hdu 3549 Flow Problem【最大流增广路入门模板题】
- 增广路算法Ford-Fulkerson
- HDU 3549 Flow Problem 最大流 最小增广路 SAP算法 从EK算法的753MS降到了46MS
- hdu 3549 Flow Problem 最大流模板题 Ford-Fulkerson算法
- HDU 3549 Flow Problem(网络流入门题-最大流的Ford-Fulkerson算法)
- 【网络流】HDU 1532 Drainage Ditches(最大流Ford-Fulkersson)+HDU 3549 Flow Problem(最大流Dinic算法)
- HDU3549 Flow Problem(ford-fulkerson算法)
- hdu 1532 Drainage Ditches 增广路 ford
- hdu 3549 EK算法 Flow Problem
- HDU 3549 Flow Problem
- hdu 3549 Flow Problem
- java常用的比较方法
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
- (完全背包)小P寻宝记——好基友一起走
- UML类图
- js 获取URL后面的参数
- hdu 3549 Flow Problem 增广路ford-fullkerson算法
- linux中fork()函数详解(原创!!实例讲解)
- C++_重载运算符<< ostream流重载注意事项_使自定义数据可以用cout输出
- 控件学习---UIActivityIndicatorView---摘自培训资料
- UIButton 设置标题和图片的使用方式
- Ubuntu下对ROS进行开发的eclipse环境
- 最好最易懂的Git教学——分享“好麻烦部落格”Git教学(2)
- HttpClient在使用中有两个超时时间 区别
- python读取leveldb数据