#include"stdio.h"
#include"string.h"
#include"queue"
using namespace std;
#define N 205
const int inf=0x7fffffff;
int g[N][N];
int pre[N],mark[N];
int ek(int n)
{
int i,u,d,ans=0;
while(1)
{
queue<int>q;
q.push(1);
memset(mark,0,sizeof(mark));
memset(pre,0,sizeof(pre));
mark[1]=1;
while(!q.empty())
{
u=q.front();
q.pop();
for(i=1;i<=n;i++)
{
if(!mark[i]&&g[u][i])
{
mark[i]=1;
pre[i]=u;
q.push(i);
}
}
}
if(pre[n]==0)
break;
d=inf;
for(i=n;i!=1;i=pre[i])
{
d=min(d,g[pre[i]][i]);
}
for(i=n;i!=1;i=pre[i])
{
g[pre[i]][i]-=d;
g[i][pre[i]]+=d;
}
ans+=d;
}
return ans;
}
int main()
{
int n,m,u,v,w;
while(scanf("%d%d",&n,&m)!=-1)
{
memset(g,0,sizeof(g));
while(n--)
{
scanf("%d%d%d",&u,&v,&w);
g[u][v]+=w;
}
printf("%d\n",ek(m));
}
return 0;
}
最大流 代码
最新推荐文章于 2023-02-13 22:01:34 发布