Power Network--POJ 1459
2010-08-13 15:25
381 查看
1、题目类型:图论、最大流、Edmonds_Karp算法。
2、解题思路:简单最大流问题,Edmonds_Karp算法的经典应用。
3、注意事项:对比Ford_Fulkerson算法DFS寻找增广路径,Edmonds_Karp算法BFS寻找增广路径效率更高。
4、实现方法:
2、解题思路:简单最大流问题,Edmonds_Karp算法的经典应用。
3、注意事项:对比Ford_Fulkerson算法DFS寻找增广路径,Edmonds_Karp算法BFS寻找增广路径效率更高。
4、实现方法:
#include<iostream> #include<cmath> #include<queue> using namespace std; #define Max 110 #define INF 99999999 int n,np,nc,m,s,t; int map[Max][Max],tmp[Max],pre[Max]; void Init() { int i,u,v,z; char ch; memset(map,0,sizeof(map)); cin>>np>>nc>>m; for(i=0;i<m;i++) { cin>>ch>>u>>ch>>v>>ch>>z; map[u+1][v+1]=z; } for(i=0;i<np;i++) { cin>>ch>>u>>ch>>z; map[0][u+1]=z; } for(i=0;i<nc;i++) { cin>>ch>>u>>ch>>z; map[u+1][n+1]=z; } } int BFS() { int i,k; queue <int> Q; memset(tmp,0,sizeof(tmp)); memset(pre,0,sizeof(pre)); tmp[s]=INF; Q.push(s); while(!Q.empty()) { k=Q.front(); Q.pop(); for(i=0;i<=t;i++) { if(tmp[i]==0 && map[k][i]) { tmp[i]=tmp[k]>map[k][i]?map[k][i]:tmp[k]; pre[i]=k; Q.push(i); } } } if(tmp[t]==0) return -1; return 1; } void Edmonds_Karp() { int i,ans=0; s=0,t=n+1; while(BFS() != -1) { ans+=tmp[t]; for(i=t;i!=s;i=pre[i]) { map[pre[i]][i]-=tmp[t]; map[i][pre[i]]+=tmp[t]; } } cout<<ans<<endl; } int main() { while(cin>>n) { Init(); Edmonds_Karp(); } return 1; }
相关文章推荐
- poj 1459 Power Network 初级->图算法->最大流(基本算法:增广路)
- POJ 1459 Power Network 网络流
- Poj 1459 Power Network 最大流
- 解题报告 之 POJ1459 Power Network
- POJ 1459 —— Power Network
- POJ 1459 Power Network 网络流模板题
- poj1459 Power Network
- [POJ 1459 Power Network] Dinic网络流
- POJ 1459 Power Network【最大流基础题 EK 算法】
- poj1459 Power Network --- 最大流 EK/dinic
- POJ 1459 Power Network (最大流)
- POJ 1459 Power Network 最大流
- POJ - 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network (最大流)
- poj 1459 Power Network(网络流最大流,多源点多汇点)
- POJ 1459 Power Network(网络流)
- poj1459(Power Network + EK)
- poj 1459 Power Network (测模板)
- Power Network poj 1459 增广流EK