poj 1459 Power Network(网络流最大流,多源点多汇点)
2013-07-30 16:57
465 查看
网络流中的最大流问题。
说明下题意:
有多个供电站,同时也有多个户主,然后告诉一些户主跟供电站之间的线路的容量关系。求出在整个网络中的最大流。
跟上一道网络流不同的是这个题有多个源点跟多个汇点。
然后还想要套用ek算法的模板,很简单,建立一个超级源点跟一个超级汇点就Ok了。
说明下题意:
有多个供电站,同时也有多个户主,然后告诉一些户主跟供电站之间的线路的容量关系。求出在整个网络中的最大流。
跟上一道网络流不同的是这个题有多个源点跟多个汇点。
然后还想要套用ek算法的模板,很简单,建立一个超级源点跟一个超级汇点就Ok了。
#include<cstdio> #include<iostream> #include<cstring> #include<stack> #include<queue> using namespace std; const int Maxsize = 105; const int inf = 0x3f3f3f3f; int Graph[Maxsize][Maxsize]; bool vis[Maxsize]; int prev[Maxsize]; int minx(int a,int b) { return a<b?a:b; } int bfs(int s,int t)/*EK*/ { int v,nMinFlow = inf; queue<int>q; memset(vis,false,sizeof(vis)); memset(prev,-1,sizeof(prev));/*由于顶点是从0开始的,所以标记这里不能初始化为零*/ vis[s] = true; prev[s] = -1; q.push(s); bool flag = false; while(!q.empty()) { v = q.front(); q.pop(); if(v == t) { flag = true; break; } for(int i = 0 ; i <= t && !flag ; i++) { if(Graph[v][i] > 0 && !vis[i]) { vis[i] = true; prev[i] = v; q.push(i); } } } if(!flag) { return 0; } v = t; while(prev[v] != -1) { nMinFlow = minx(nMinFlow,Graph[prev[v]][v]); v = prev[v]; } v = t; while(prev[v] != -1) { Graph[prev[v]][v] -= nMinFlow; Graph[v][prev[v]] += nMinFlow; v = prev[v]; } return nMinFlow; } void MaxFlow(int s,int t)/*每次求出一组数据的MaxFlow*/ { int maxflow = 0; int nMinFlow; while(nMinFlow = bfs(s,t)) { maxflow += nMinFlow; } printf("%d\n",maxflow); } int main() { int s,t;/*s,t分别表示超级源点跟,超级汇点*/ int n,np,nc,m; while(scanf("%d %d %d %d",&n,&np,&nc,&m) != EOF) { memset(Graph,0,sizeof(Graph)); char a,b,c; int u,v,w; s = n; t = n+1; for(int i = 0 ; i < m ; i++)/*建图*/ { cin>>a>>u>>b>>v>>c>>w; Graph[u][v] += w; } for(int i = 0 ; i < np ; i++) { cin>>a>>v>>b>>w; Graph[s][v] += w; } for(int i = 0 ; i < nc ; i++) { cin>>a>>u>>b>>w; Graph[u][t] += w; } MaxFlow(s,t); } return 0; }
相关文章推荐
- POJ1459 Power Network(多源点网络流,最大流,EK算法)
- POJ 1459 PowerNetwork 多源点网络流入门(EK算法求最大流)
- POJ 1459 Power Network 最大流多源点多汇点。
- POJ 1459 Power Network (最大流, 网络流, EdmondsKarp算法求解最大流)
- POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Network / FZU 1161 (网络流,最大流)
- POJ - 1459 Power Network(网络流最大流)
- POJ 1459-Power Network(网络流_最大流)
- POJ 1459-Power Network(网络流-最大流-ISAP)C++
- poj 1459 Power Network(网络流_最大流)
- POJ 1459 Power Network【多源汇点最大流】
- poj 1459 Power Network 【图论-网络流-最大流-EK】
- poj 1459 Power Network(网络流 最大流 dinic模板题)
- POJ1459-Power Network-网络流-最大流(EK模板题)
- POJ 1459 Power Network(网络流 最大流 多起点,多汇点)
- POJ - 1459 Power Network解题报告(网络流最大流 超级源点建图)
- POJ - 1459 Power Network(网络流-最大流)
- Power Network POJ - 1459(多源点多汇点)
- poj 1459 Power Network : 最大网络流 dinic算法实现
- POJ训练计划1459_Power Network(网络流最大流/Dinic)
- poj 1459 Power Network : 最大网络流 dinic算法实现