`
人生难得糊涂
  • 浏览: 114194 次
社区版块
存档分类
最新评论

poj1459-网络流问题

 
阅读更多

这题是多源点多汇点的问题,对于此类问题,只要建立一个超级原点,和超级汇点就行了 ,超级源点可以到原图中所有的点,原图中所有的点都可以到超级汇点。而解决最大流问题用的是EK算法。 不了解的请自行百度。

#include<iostream>
#include<queue>
using namespace std;
#define MAXSIZE 130
int map[MAXSIZE][MAXSIZE];
int pre[MAXSIZE];
queue<int>que;
int n,np,nc,m;
int bfs(int src,int dec)//源点和汇点
{
	memset(pre,-1,sizeof(pre));
	while(!que.empty())que.pop();
	pre[src]=src;
	que.push(src);
	int temp;
	while(!que.empty())
	{
		temp=que.front();
		que.pop();
		if(temp==dec)
			break;
		for(int i=0;i<n+2;i++)
		{
			if(map[temp][i]&&pre[i]==-1)//如果有路径 并且 还没有用过
			{
				pre[i]=temp;
				que.push(i);
			}
		}
	}
	
	if(temp==dec)
		return 1;
	else 
	return 0;
}

int maxFlow(int src,int dec)
{
	int ans=0;
	while(bfs(src,dec))
	{
		int i;
		int min=999999;
		for(i=dec;i!=src;i=pre[i])
		{
			min=min>map[pre[i]][i]?map[pre[i]][i]:min;
		}

		for(i=dec;i!=src;i=pre[i])
		{
			map[pre[i]][i]-=min;
			map[i][pre[i]]+=min;
		}
		ans+=min;
	}

	return ans ;
}


int main()
{
	int i;
	char ss[50];
	int a,b,c;
	int src,dec;
	while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=EOF)
	{
		memset(map,0,sizeof(map));
		src=n;
		dec=n+1;
		for(i=0;i<m;i++)
		{
			scanf("%s",ss);
			sscanf(ss,"(%d,%d)%d",&a,&b,&c);
			map[a][b]=c;
		}
		for(i=0;i<np;i++)
		{
			scanf("%s",ss);
			sscanf(ss,"(%d)%d",&a,&b);
			map[src][a]=b;
		}
		for(i=0;i<nc;i++)
		{
			scanf("%s",ss);
			sscanf(ss,"(%d)%d",&a,&b);
			map[a][dec]=b;
			
		}
		printf("%d\n",maxFlow(src,dec));
	}

	
	return  0;
}

 

 

 

 

0
0
分享到:
评论

相关推荐

    poj pku图论、网络流入门题总结、汇总

    很经典的图论,网络流入门的题目,值得一看啊~~其中有简单的解析

    晒代码之一——POJ3469第一次AC

    这题是道神题,神就神在,它既能让你搞懂网络流及其优化,还给了你很大的优化空间。

    网络流(最大流)SAP源码

    最短增广路算法的实现 并加上了gap优化和当前弧优化 代码为POJ3469(dual core)的源码

    pojacm题目具体分类

    4.图论 //Dijkstra、最小生成树、网络流 5.数论 //解模线性方程 6.计算几何 //凸壳、同等安置矩形的并的面积与周长 7.组合数学 //Polya定理 8.模拟  9.数据结构 //并查集、堆 10.博弈论  //表示举例 非主流...

    计算机课件 of 网络流

    一个有关网络流的课件,还是不错的,值得学习一下

    计算机通信交换技术

    14.1 问题 194 14.2 OSPF扩展 197 14.2.1 Opaque LSA 197 14.2.2 地址解析通告 198 14.3 PNNI扩展 200 14.3.1 PNNI扩充选路 200 14.3.2 代理PAR 202 14.3.3 综合的PNNI 204 更多的信息 206 第15章 多协议标签交换 ...

    大学课程中相关一些算法题

    4.1 最大乘积问题 4.2 魔术数字游戏 4.3 Jimmy's Bad Day 5.1 循环赛的日程表问题 5.2 猴子选大王 5.3 售货员的难题 6.1 最大字段和问题 6.2 N*N方阵 6.3 埃及分数最好表达式

    挑战程序设计竞赛(第2版)

    3.5 借助水流解决问题的网络流 3.5.1 最大流 3.5.2 最小割 3.5.3 二分图匹配 3.5.4 一般图匹配 3.5.5 匹配、边覆盖、独立集和顶点覆盖 3.5.6 最小费用流 3.5.7 应用问题 3.6 与平面和空间打交道的计算几何 3.6.1 ...

    浙江大学ACM模板 计算几何,图论,数据结构,经典题的模板

    8.10 最大网络流 175 8.11 最小费用流 180 8.12 最大团问题 182 8.13 二分图匹配 184 8.14 带权的最优二分图匹配 184 9.搜索算法概略 187 9.1 迭代深搜+IDA* 187 9.2 分之界限法(深搜) 189 9.3 A* 8数码问题( ...

    leetcode中国-OJ:在线法官和代码模板

    leetcode中国功夫 现状 (2011.11.19) poj: 顶级编码器: 代码力量: 间谍: 佐伊: 福伊: 紫外线: ...分而治之的问题 ...网络流问题 算法评论(中文)感谢七月的博客 高级数据结构: HZ @ UCSD CSE

    Dinic多路增广pascal源码

    Dinic多路增广pascal源码 poj 1273格式

    一个好的 pku 题目分类

    4.图论 //Dijkstra、最小生成树、网络流 5.数论 //解模线性方程 6.计算几何 //凸壳、同等安置矩形的并的面积与周长 7.组合数学 //Polya 定理 8.模拟 9.数据结构 //并查集、堆 10.博弈论 1、 排序 2、 搜索、回溯、...

Global site tag (gtag.js) - Google Analytics