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

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
分享到:
评论

相关推荐

    POJ2195-Going Home【费用流】

    【标题】"POJ2195-Going Home" 是一道来自北京大学在线判题系统POJ的编程题目,主要考察的是运用费用流算法解决实际问题的能力。这道题的中文名称是“回家”,通过题目我们可以推测它可能涉及到路径规划或者资源分配...

    POJ3411-Paid Roads【class】

    从编程竞赛的角度来看,"Paid Roads"可能是一个涉及图论的问题,可能需要处理如最短路径、网络流或其他图算法。类的使用可能表示程序设计采用了面向对象的方式,将数据结构(如图的节点和边)和操作(如计算费用或...

    POJ1724-ROADS

    标签“POJ 1724 ROADS”进一步强调了这是关于POJ平台上的1724号问题,主题涉及“ROADS”,可能涉及到图论、最短路径、网络流等图相关算法。这类问题通常要求选手找到最优的道路连接方案,或者计算最小成本、最大流量...

    POJ1039-Pipe

    4. **图论**:由于题目名为"Pipe",很可能涉及到图的结构,比如管道之间的连接可以用图来表示,可能需要处理的问题可能包括找到最短路径、最大流或者最小生成树等。 5. **编程语言**:虽然未指定编程语言,但AC代码...

    POJ1716-Integer Intervals【Difference Constraints】

    差分约束系统的解决方法多样,常见的有松弛线性规划(Linear Programming Relaxation)、网络流(Network Flow)和分支限界(Branch and Bound)等。在本题中,根据解题者的选择,可能使用了其中的一种或多种技术。...

    POJ 分类题目

    - **应用场景**:适用于构建最小成本网络、电力线路铺设等问题。 **4. 拓扑排序** - **定义**:对于有向无环图(DAG),拓扑排序是按某种顺序对顶点进行排序,使得对于任意一条从顶点 u 到 v 的边,u 在排序中都...

    POJ1328-Radar Installation

    3. **图论与网络流**:如果雷达之间存在干扰,可能需要将它们看作图中的节点,通过构建网络来求解最小割或最大流问题,以找到最佳安装方案。 4. **动态规划**:如果问题具有重叠子问题和最优子结构的特性,可能会...

    POJ2983-Is the Information Reliable【差分约束+优化Bellman】

    差分约束系统的解决方案通常基于图论,通过构建网络流或二分图来求解。 接下来,我们要理解优化版的Bellman算法,也称为Bellman-Ford算法。这是一种求解最短路径问题的动态规划方法,尤其适用于存在负权边的情况。...

    POJ1408-Fishnet

    1. **图论**:题目可能与图的概念有关,可能是网络流问题或者最小生成树问题,这些都需要理解图的边、节点、路径等基本概念,并能熟练运用DFS(深度优先搜索)或BFS(广度优先搜索)进行遍历。 2. **动态规划**:...

    POJ1000-1299中的80题AC代码

    5. **其他**:位操作、编码解码、模拟、图论问题(最短路径、最小生成树、网络流等)、递归、分治策略等。 每道题目都可能综合运用到多个知识点,而AC代码则代表了解决这些问题的有效方法。通过研究这些代码,我们...

    POJ1804-Brainman【借助Mergesort求逆序数O(nlogn)】

    逆序数在许多算法问题中都有应用,例如在解决最短路径、网络流、线性规划等复杂问题时,逆序对的概念是非常关键的。它能帮助我们理解数据之间的关系,并为优化算法提供依据。 **直接求逆序数的O(n^2)方法**: 一种...

    acm新手刷题攻略之poj

    - 推荐题目:[poj1459](https://vjudge.net/problem/POJ-1459)、[poj3436](https://vjudge.net/problem/POJ-3436) - 二分图匹配问题通常通过匈牙利算法(Hungarian Algorithm)来解决。 #### 三、数据结构 1. **...

    ACM题目分类.txt

    - **描述**:流网络算法如Ford-Fulkerson算法等用于解决最大流问题。 - **应用场景**:物流调度、资源分配等。 - **相关题目**: - POJ 1094 #### 4. 强连通分量 - **描述**:强连通分量是指有向图中的节点集合,...

    ACM 新手指南 PKU 题目分类

    - **网络流**:涉及到最大流、最小割等问题,适用于解决资源分配类问题。 - 示例题目:POJ 1094 - **匹配问题**:如匈牙利算法(Hungarian Method),适用于解决二分图的最大匹配问题。 - 示例题目:POJ 1459, POJ...

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

    根据提供的标题“poj pku图论、网络流入门题总结、汇总”及描述“很经典的图论,网络流入门的题目,值得一看啊~~其中有简单的解析”,本篇将对这些经典图论与网络流问题进行详细的分析和总结。通过梳理各题目及其...

    算法训练方案详解

    - **示例题目**: POJ 1459, POJ 3436 - **注意事项**: 理解流量守恒和容量限制原则。 #### 三、数据结构 **1. 字符串操作** - **定义**: 包括字符串匹配、查找等操作。 - **应用场景**: 处理文本信息。 - **...

    poj图论题目汇总

    #### 1459 Power Network - 网络流 - **知识点**:网络流算法。 #### 1466 Girls and Boys - 二分图 (最大独立团) - **知识点**:最大独立团问题,在二分图中寻找最大的不相邻顶点集合。 #### 1469 COURSES - 二...

    POJ题目简单分类(ACM)

    - **最大流的增广路算法**:KM算法,如poj1459和poj3436,用于寻找网络中能传输的最大流量。 3. **数据结构**: - **字符串处理**:如poj1035,涉及字符串操作和模式匹配。 - **排序算法**:包括快速排序、归并...

    ACM 题型

    3. **流网络** - 示例题目:poj1094 4. **拓扑排序** - 示例题目:poj3041, poj3020 5. **二分匹配** - **匈牙利算法(KM算法)**:用于求解二分图的最大匹配问题。 - 示例题目:poj1459, poj3436 #### 数据...

    poj题目分类--acmer做题极有用资源

    7. **网络流**与**最短路径**:这些高级算法在解决流量分配、最优化问题时非常有效,也是竞赛中的常客。 8. **模拟**:模拟题目通常要求准确地执行一系列操作,对逻辑推理和细节处理能力有较高要求。 “POJ题目...

Global site tag (gtag.js) - Google Analytics