这题是多源点多汇点的问题,对于此类问题,只要建立一个超级原点,和超级汇点就行了 ,超级源点可以到原图中所有的点,原图中所有的点都可以到超级汇点。而解决最大流问题用的是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; }
相关推荐
【标题】"POJ2195-Going Home" 是一道来自北京大学在线判题系统POJ的编程题目,主要考察的是运用费用流算法解决实际问题的能力。这道题的中文名称是“回家”,通过题目我们可以推测它可能涉及到路径规划或者资源分配...
从编程竞赛的角度来看,"Paid Roads"可能是一个涉及图论的问题,可能需要处理如最短路径、网络流或其他图算法。类的使用可能表示程序设计采用了面向对象的方式,将数据结构(如图的节点和边)和操作(如计算费用或...
标签“POJ 1724 ROADS”进一步强调了这是关于POJ平台上的1724号问题,主题涉及“ROADS”,可能涉及到图论、最短路径、网络流等图相关算法。这类问题通常要求选手找到最优的道路连接方案,或者计算最小成本、最大流量...
4. **图论**:由于题目名为"Pipe",很可能涉及到图的结构,比如管道之间的连接可以用图来表示,可能需要处理的问题可能包括找到最短路径、最大流或者最小生成树等。 5. **编程语言**:虽然未指定编程语言,但AC代码...
差分约束系统的解决方法多样,常见的有松弛线性规划(Linear Programming Relaxation)、网络流(Network Flow)和分支限界(Branch and Bound)等。在本题中,根据解题者的选择,可能使用了其中的一种或多种技术。...
- **应用场景**:适用于构建最小成本网络、电力线路铺设等问题。 **4. 拓扑排序** - **定义**:对于有向无环图(DAG),拓扑排序是按某种顺序对顶点进行排序,使得对于任意一条从顶点 u 到 v 的边,u 在排序中都...
3. **图论与网络流**:如果雷达之间存在干扰,可能需要将它们看作图中的节点,通过构建网络来求解最小割或最大流问题,以找到最佳安装方案。 4. **动态规划**:如果问题具有重叠子问题和最优子结构的特性,可能会...
差分约束系统的解决方案通常基于图论,通过构建网络流或二分图来求解。 接下来,我们要理解优化版的Bellman算法,也称为Bellman-Ford算法。这是一种求解最短路径问题的动态规划方法,尤其适用于存在负权边的情况。...
1. **图论**:题目可能与图的概念有关,可能是网络流问题或者最小生成树问题,这些都需要理解图的边、节点、路径等基本概念,并能熟练运用DFS(深度优先搜索)或BFS(广度优先搜索)进行遍历。 2. **动态规划**:...
5. **其他**:位操作、编码解码、模拟、图论问题(最短路径、最小生成树、网络流等)、递归、分治策略等。 每道题目都可能综合运用到多个知识点,而AC代码则代表了解决这些问题的有效方法。通过研究这些代码,我们...
逆序数在许多算法问题中都有应用,例如在解决最短路径、网络流、线性规划等复杂问题时,逆序对的概念是非常关键的。它能帮助我们理解数据之间的关系,并为优化算法提供依据。 **直接求逆序数的O(n^2)方法**: 一种...
- 推荐题目:[poj1459](https://vjudge.net/problem/POJ-1459)、[poj3436](https://vjudge.net/problem/POJ-3436) - 二分图匹配问题通常通过匈牙利算法(Hungarian Algorithm)来解决。 #### 三、数据结构 1. **...
- **描述**:流网络算法如Ford-Fulkerson算法等用于解决最大流问题。 - **应用场景**:物流调度、资源分配等。 - **相关题目**: - POJ 1094 #### 4. 强连通分量 - **描述**:强连通分量是指有向图中的节点集合,...
- **网络流**:涉及到最大流、最小割等问题,适用于解决资源分配类问题。 - 示例题目:POJ 1094 - **匹配问题**:如匈牙利算法(Hungarian Method),适用于解决二分图的最大匹配问题。 - 示例题目:POJ 1459, POJ...
根据提供的标题“poj pku图论、网络流入门题总结、汇总”及描述“很经典的图论,网络流入门的题目,值得一看啊~~其中有简单的解析”,本篇将对这些经典图论与网络流问题进行详细的分析和总结。通过梳理各题目及其...
- **示例题目**: POJ 1459, POJ 3436 - **注意事项**: 理解流量守恒和容量限制原则。 #### 三、数据结构 **1. 字符串操作** - **定义**: 包括字符串匹配、查找等操作。 - **应用场景**: 处理文本信息。 - **...
#### 1459 Power Network - 网络流 - **知识点**:网络流算法。 #### 1466 Girls and Boys - 二分图 (最大独立团) - **知识点**:最大独立团问题,在二分图中寻找最大的不相邻顶点集合。 #### 1469 COURSES - 二...
- **最大流的增广路算法**:KM算法,如poj1459和poj3436,用于寻找网络中能传输的最大流量。 3. **数据结构**: - **字符串处理**:如poj1035,涉及字符串操作和模式匹配。 - **排序算法**:包括快速排序、归并...
3. **流网络** - 示例题目:poj1094 4. **拓扑排序** - 示例题目:poj3041, poj3020 5. **二分匹配** - **匈牙利算法(KM算法)**:用于求解二分图的最大匹配问题。 - 示例题目:poj1459, poj3436 #### 数据...
7. **网络流**与**最短路径**:这些高级算法在解决流量分配、最优化问题时非常有效,也是竞赛中的常客。 8. **模拟**:模拟题目通常要求准确地执行一系列操作,对逻辑推理和细节处理能力有较高要求。 “POJ题目...