您的位置:首页 > 理论基础 > 计算机网络

poj 1273 网络流

2017-02-24 18:41 405 查看
#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
int res[202][202],minn,n,m,pre[202],a[202];
bool bfs(){
queue<int>q;
q.push(1);
int k;
memset(a,0,sizeof(a));
a[1]=0x3f3f3f3f;
while(!q.empty()){
k=q.front();
if(k==m) return 1;
q.pop();
for(int i=1;i<=m;i++){
if(!a[i]&&res[k][i]){
q.push(i);
pre[i]=k;
a[i]=min(a[k],res[k][i]);
}
}
}
return 0;
}
int maxflow(){
int ans=0;
while(bfs()){
ans+=a[m];
int k=m;
while(k!=1){
res[pre[k]][k]-=a[m];
res[k][pre[k]]+=a[m];
k=pre[k];
}
}
return ans;
}
int main(){
// freopen("1.txt","r",stdin);
int t1,t2,t3;
while(cin>>n>>m){
memset(res,0,sizeof(res));
for(int i=1;i<=n;i++){
cin>>t1>>t2>>t3;
res[t1][t2]+=t3;
}
cout<<maxflow()<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: