最大流
Posted 幻觉czw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大流相关的知识,希望对你有一定的参考价值。
#include<iostream>
#include<queue>
#include<climits>
using namespace std;
#define SIZE 200
int 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;
以上是关于最大流的主要内容,如果未能解决你的问题,请参考以下文章