网络流最大流算法参考程序
来源:互联网 发布:ubuntu界面太小 编辑:程序博客网 时间:2024/04/30 20:02
#include<stdio.h>#include<stdlib.h>int c[101][101],f[101][101],p[101],m,n,d[10000],pre[101];int main(){ int i,j,k=1,top,last; scanf("%d%d",&n,&m); int x,y,z; for(i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&z); c[x][y]=z;c[y][x]=z; } while(k){ k=0; top=0;last=1;d[1]=1; for(i=1;i<=n;i++)p[i]=0; p[1]=1; while(top<last){ top++; x=d[top]; for(i=2;i<=n;i++) if(!p[i] && (c[x][i]>f[x][i] || f[i][x]>0)){ d[++last]=i; p[i]=1; pre[i]=x; if(i==n){k=1;break;} } if(k==1)break; } if(k==0)break; int min=10000000; x=n; while(x!=1){ if(c[pre[x]][x]>f[pre[x]][x]&& c[pre[x]][x]-f[pre[x]][x]<min) min=c[pre[x]][x]-f[pre[x]][x]; else if(f[x][pre[x]]>0 && f[x][pre[x]]<min) min=f[x][pre[x]]; x=pre[x]; } x=n; while(x!=1){ if(c[pre[x]][x]>f[pre[x]][x]) f[pre[x]][x]+=min; else if(f[x][pre[x]]>0) f[x][pre[x]]-=min; x=pre[x]; } } int max=0; for(i=2;i<=n;i++) max+=f[1][i]; printf("%d\n",max); system("pause"); return 0; }
2 0
- 网络流最大流算法参考程序
- 最大网络流算法
- 网络最大流算法
- 最大网络流算法
- 网络流-最大流算法
- 算法设计 最大网络流
- 网络最大流算法小结
- 最大网络流 EK 算法
- 网络最大流SAP算法
- 最大网络流Dinic算法
- 网络最大流 EK算法
- 网络最大流 dinic算法
- isap算法网络最大流
- 网络流最大流最小割算法
- 网络流之最大流sap算法
- 网络流最大流最小割算法
- 网络流最大流的sap()算法
- 网络流最大流 Edmonds-Karp算法
- (2)JS语法注意事项(变量类型)
- Valid Palindrome
- ZXing二维码
- 韦东山视频第1期 学习计划
- CSS vertical-align的介绍
- 网络流最大流算法参考程序
- C程序修改控制台颜色
- UVa-10487-Closest Sums
- Two Sum[leetcode]
- Linux platform compile execuable makefile
- Android系统截屏功能提取
- 细数Xcode 6 给我们带来的新特性
- centos6.4安装配置jdk1.7
- intellij-erlang 配置