最大流
来源:互联网 发布:linux中touch创建用法 编辑:程序博客网 时间:2024/04/27 20:06
#include<iostream>#include<queue>#include<climits>using namespace std;#define SIZE 200int pre[SIZE];bool visit[SIZE];int flow[SIZE];int capacity[SIZE][SIZE];queue<int>Q;int min(int a,int b){return a<b ? a:b;}int bfs(int s,int t){memset(visit,0,sizeof(visit));memset(flow,0,sizeof(flow));memset(pre,0,sizeof(pre));visit[s]=true;flow[s]=INT_MAX;Q.push(s);while(!Q.empty()) {int tmp=Q.front();Q.pop();if(tmp==t)break;for(int i=s;i<=t;++i){if(!visit[i] && capacity[tmp][i]>0){pre[i]=tmp;visit[i]=true;flow[i]=min(capacity[tmp][i],flow[tmp]);Q.push(i);}}}if(flow[t]==0)return false;else return flow[t];}int Maxflow(int s,int t){int increase=0;int sum=0;while(increase=bfs(s,t)!=0){int k=t;while(k!=s){int last=pre[k];capacity[last][k]-=flow[t];capacity[k][last]+=flow[t];k=last;}sum+=flow[t];}return sum;}int main(){memset(capacity,0,sizeof(capacity));capacity[0][1]=16;capacity[0][2]=13;capacity[1][0]=-16;capacity[1][2]=10;capacity[1][3]=12;capacity[2][1]=4;capacity[2][3]=-9; capacity[2][4]=14;capacity[3][1]=-12;capacity[3][2]=9;capacity[3][4]=-7;capacity[3][5]=20;capacity[4][2]=-14;capacity[4][3]=7;capacity[4][5]=4;capacity[5][3]=-20;capacity[5][4]=-4;bfs(0,5);cout<<Maxflow(0,5);return 0;
0 0
- 最大流-最大利益
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 最大流
- 关于TableViewCell生成时dequeueReusableCellWithIdentifier的认识
- Ubuntu12.04 X64下,NAO C++SDK 安装详介
- 长乐未央——记高桥留美子的辉煌三十年
- DOM操作-包裹节点
- TCP--IP详解之二(基本框架函数)
- 最大流
- 图形界面vs字符界面切换
- 14、UITextField 与 UITextView 的区别-OC+UI
- source insight快捷键及使用技巧
- 语法分析之自底向上分析
- 我的sublime配置
- xcode 使用时一些心得
- linux C 文件锁一
- c++内存的分配方式