网络流——最大流入门题目 HDU 1532——Drainage Ditches
2013-05-04 22:28
357 查看
最大流EK算法。
网上找了个模版,解析很详细。
网上找了个模版,解析很详细。
#include <iostream> using namespace std; #define MAXN 205 #define INF 2110000000 #define MIN(x,y) (x<y?x:y) int map[MAXN][MAXN]; int max_flow(int num,int map[][MAXN],int source,int sink)//参数含义:结点数量 网络 源点 汇点 { int my_queue[MAXN],queue_first,queue_end;//数组做队列 实现BFS搜索路径 int pre[MAXN];//记录结点的父节点 实 int min_flow[MAXN];//当前路径中最小的一段的值,也即限制值 int flow[MAXN][MAXN];//记录当前网络中的流 int ans=0;//最终结果 memset(flow,0,sizeof(flow));//初始化网络中的流 while(1)//一直循环,直到不存在增广路径 { queue_first=1;// 初始化队列 queue_end=1; my_queue[queue_end++]=source; memset(pre,-1,sizeof(pre)); min_flow[source]=INF; pre[source]=-2;//源点的父节点需特殊标示 while(queue_first<queue_end)//BFS寻找增广路径 { int temp=my_queue[queue_first++];//出队列 for(int i=1;i<=num;i++)//由结点temp往外扩展 { if(pre[i]==-1&&flow[temp][i]<map[temp][i])//当结点i还未被探索到,并且还有可用流量 { my_queue[queue_end++]=i;//加入队列 pre[i]=temp;//标示父节点 min_flow[i]=MIN(min_flow[temp],(map[temp][i]-flow[temp][i]));//求得min_flow } } if(pre[sink]!=-1)//sink的父节点不为初始值,说明BFS已经找到了一条路径 { int k=sink; while(pre[k]>=0) { flow[pre[k]][k]+=min_flow[sink];//将新的流量加入flow flow[k][pre[k]]=-flow[pre[k]][k];//添加反向边 k=pre[k]; } break; } } if(pre[sink]==-1)//不存在增广路径,返回 return ans; else ans+=min_flow[sink]; } } int main() { int m,n; while(cin>>n>>m) { int a,b,cost; memset(map,0,sizeof(map)); for(int i=1;i<=n;i++) { cin>>a>>b>>cost; map[a][b]+=cost; } cout<<max_flow(m,map,1,m)<<endl; } return 0; }
相关文章推荐
- NYOJ 323 && HDU 1532 && POJ 1273 Drainage Ditches (网络流之最大流入门)
- hdu 1532 Drainage Ditches && hdu 3549 Flow Problem 网络流最大流问题 Edmonds-Karp算法
- HDU 1532 Drainage Ditches【最大流入门题, EdmondKarp算法】
- Drainage Ditches hdu 1532 最大流模板+入门题目
- hdu 1532 POJ 1273 Drainage Ditches 和hdu 3549 Flow Problem 网络流入门(EK和dinic)
- hdu 1532 最大流入门题
- HDU 1532(网络流之最大流)
- HDU 3549(网络流入门之最大流)
- POJ 1273 || HDU 1532 Drainage Ditches ,最大流入门题
- hdu 2037 今年暑假不AC【贪心入门题目】
- 图论、网络流入门题目总结
- HDU 3572Task Schedule(网络流之最大流)
- HDU 3277Marriage Match III(二分+并查集+拆点+网络流之最大流)
- HDU-1532-网络流最大流
- HDU 3549 适合网络流入门(内含sap模板和Dinic模板)Flow Problem
- HDU 3549 Flow Problem(网络流入门题-最大流的Ford-Fulkerson算法)
- 【网络流】HDU 1532 Drainage Ditches(最大流Ford-Fulkersson)+HDU 3549 Flow Problem(最大流Dinic算法)
- hdu 1394 ------线段树入门题目
- HDU 3605Escape(缩点+网络流之最大流)
- HDU 4975 (杭电多校 #10 1005题)A simple Gaussian elimination problem.(网络流之最大流)