您的位置:首页 > 大数据 > 人工智能

poj 1273 Drainage Ditches

2011-07-22 20:22 176 查看
#include<iostream>            //网络流
#include<queue>
using namespace std;
#define inf 0x7fffffff
int flow[202][202],cap[202][202],a[202],p[202],s,t,f;
int main()
{
int n,m;
while(cin>>n>>m)
{
memset(cap,0,sizeof(cap));
int si,ei,ci;
while(n--)
{
cin>>si>>ei>>ci;
cap[si][ei]+=ci;    //边是有向的,而且可能重复
}
s=1;t=m;
queue<int> col;
memset(flow,0,sizeof(flow));
f=0;
while(1)
{
memset(a,0,sizeof(a));
a[s]=inf;
col.push(s);
while(!col.empty())
{
int u=col.front();col.pop();
for(int i=1;i<=m;++i)
if(!a[i]&&cap[u][i]>flow[u][i])
{
a[i]=min(a[u],cap[u][i]-flow[u][i]);
p[i]=u;
col.push(i);
}
}
if(a[t]==0)
break;
for(int i=t;i!=s;i=p[i])
flow[p[i]][i]+=a[t],flow[i][p[i]]-=a[t];
f+=a[t];
}
cout<<f<<endl;
}
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: