poj1273
2016-08-24 17:17
246 查看
Problem : Drainage Ditches
Description : 有n个池塘,m条水渠,每条水渠的流量是固定的,给出这m条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量.
Solution : 最大流的入门题。需要注意的是会有重边出现,那么重边的流量会累加。
Code (C++) :
Description : 有n个池塘,m条水渠,每条水渠的流量是固定的,给出这m条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量.
Solution : 最大流的入门题。需要注意的是会有重边出现,那么重边的流量会累加。
Code (C++) :
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #define N 210 #define inf 0x3f3f3f3f using namespace std; int map ; int pre ,n; queue<int >q; bool Bfs(int src,int des) { int index; memset(pre,-1,sizeof(pre)); while(!q.empty()) q.pop(); pre[src]=0; q.push(src); while(!q.empty()) { index=q.front(); q.pop(); for(int i=0; i<=n+1; i++) { if(pre[i]==-1&&map[index][i]>0) { pre[i]=index; if(i==des) return true; q.push(i); } } } return false; } int MaxFlow(int src,int des) { int maxflow=0; while(Bfs(src,des)) { int minflow=inf; for(int i=des; i!=src; i=pre[i]) if(minflow>map[pre[i]][i]) minflow=map[pre[i]][i]; for(int i=des; i!=src; i=pre[i]) { map[pre[i]][i]-=minflow; map[i][pre[i]]+=minflow; } maxflow+=minflow; } return maxflow; } int main () { //freopen("in.txt","r",stdin); int m,f,u,v; while(cin>>m>>n) { memset(map,0,sizeof(map)); for(int i=0; i<m; i++) { cin>>u>>v>>f; map[u][v]+=f;//可能会有重边出现 } int ans=MaxFlow(1,n); cout<<ans<<endl; } return 0; }
相关文章推荐
- poj 1273最大流dinic算法模板
- isap算法模板poj 1273gap+弧优化 最大流
- POJ-1273
- poj 1273 && hdu 1532 Drainage Ditches (网络最大流)
- poj 1273 Drainage Ditches(网络流入门之最大流)
- poj 1273 Drainage Ditches 最大流
- poj 1273 EK 最大流
- POJ 1273 Drainage Ditches
- POJ 1273 Drainage Ditches(最大流入门题)
- POJ---1273 Drainage Ditches【最大流】
- POJ 1273 Drainage Ditches(最大流)
- poj1273
- POJ 1273 最大流 Dinic
- http://poj.org/problem?id=1273
- poj 1273
- POJ 1273 || HDU 1532 Drainage Ditches ,最大流入门题
- 最大流入门POJ 1273 Edmonds-Karp
- poj 1273 Drainage Ditches
- poj 1273 网络流
- POJ 1273 || HDU 1532 Drainage Ditches (最大流模型)