poj 1459 最大流

转载 2013年12月04日 19:25:13
#include "stdio.h" //poj 1459 最大流
#include "string.h"
#include "queue"
using namespace std;

#define N 205
#define INF 0x3fffffff

int n;
bool mark;
int map[N][N],maxf[N],route[N];

int EK();
int BFS();
void init();
int MIN(int x,int y);

int main()
{
	int i,j;
	char ch;
	int m,np,nc;
	int u,v,w;
	while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=-1)
	{
		init();
		while(m--)
		{
			scanf(" (%d,%d)%d",&u,&v,&w);
			if(u==v) continue;
			map[u+1][v+1] += w;
		}
		int start = 0;  //超级源点
		while(np--)
		{
			scanf(" (%d)%d",&v,&w);
			map[start][v+1] += w;
		}
		int end = n+1;  //超级汇点
		while(nc--)
		{
			scanf(" (%d)%d",&u,&w);
			map[u+1][end] += w;
		}
		int ans = EK();
		printf("%d\n",ans);
	}
	return 0;
}

void init(){	memset(map,0,sizeof(map));	}
int MIN(int x,int y) {	 return x<y?x:y;	}

int EK()
{
	int ans=0,kejia;
	int x,y;
	while(kejia = BFS())
	{
		ans += kejia;
		y = n+1;
		while(y!=0)
		{
			x = route[y];
			map[x][y]-=kejia;
			map[y][x]+=kejia;
			y = x;
		}
	}
	return ans;
}

int BFS()
{
	int i;
	int x,y;
	memset(route,-1,sizeof(route));
	for(i=0;i<N;i++) maxf[i] = INF;
	queue<int> q;
	route[0] = 0;
	q.push(0);
	while(!q.empty())
	{
		x = q.front();
		q.pop();
		for(y=0;y<=n+1;y++)
		{
			if(route[y]==-1 && map[x][y]!=0)
			{
				maxf[y] = MIN(maxf[x],map[x][y]);
				route[y] = x;
				q.push(y);
			}
		}
	}
	if(route[n+1]==-1) return 0;
	return maxf[n+1];
}

相关文章推荐

poj1459Power Network(最大流)

题目请戳这里 题目大意:好难读的题目。。有n个点,编号0~n-1,每个点可能是发电站,中转站或者用户。发电站i可以发pi的电,最大pmax,用户i消耗ci的电,最大cmax,中转站不发电也不消耗电。...

POJ 1459--Power Network(三种方法求最大流)

不管用ford——fulkerson方法还是推送重贴标签,首先都不用管自环,显然一个最大流   是不会包括自环的,自环只会减少流量。然后反向边也不需要如算法导论中加入另外的   点进行处理。   ...

POJ Power Network 1459(最大流)

Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 27572   Accepted: 1...

POJ 1459-Power Network(最大流-Edmond-Karp算法)

Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 27758   ...
  • MIKASA3
  • MIKASA3
  • 2017年02月13日 13:13
  • 179

【poj1459】Power Network【模板题】【最大流】

传送门:http://poj.org/problem?id=1459 别的没啥好说的,就是另设一个超级源S和超级汇T,把所有Power Station连到S上,把所有Consumer连到T上,然后Di...

POJ 1459 Power Network(最大流)

Description A power network consists of nodes (power stations, consumers and dispatchers) connect...

poj1459(最大流)

Description A power network consists of nodes (power stations, consumers and dispatchers) connecte...

POJ 1459 Power Network 多源点多汇点+最大流(EK算法)

点击打开链接 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 20469   Acce...

POJ 1459 Power Network (多源点/汇点最大流问题)

题目链接:http://poj.org/problem?id=1459 题目给你一大段解释,其实就是废话。还给了一张解释图,其实就是误导。 题目大意:对于一个电力网来说,既有发电站,也有用电方,还...

poj 1459 最大流增广路算法

 题目大意: 有许多发电站,有许多用户,发电站和用户都有容量,每条边都有流量和容量,中转站没有容量。 求到用户的最大流。 解题思路: 这题和普通最大流问题的区别在于这题的发电站和...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1459 最大流
举报原因:
原因补充:

(最多只允许输入30个字)