POJ 1149PIGS 网络流 最大流
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 20421 | Accepted: 9320 |
Description
All data concerning customers planning to visit the farm on that particular day are available to Mirko early in the morning so that he can make a sales-plan in order to maximize the number of pigs sold.
More precisely, the procedure is as following: the customer arrives, opens all pig-houses to which he has the key, Mirko sells a certain number of pigs from all the unlocked pig-houses to him, and, if Mirko wants, he can redistribute the remaining pigs across the unlocked pig-houses.
An unlimited number of pigs can be placed in every pig-house.
Write a program that will find the maximum number of pigs that he can sell on that day.
Input
The next line contains M integeres, for each pig-house initial number of pigs. The number of pigs in each pig-house is greater or equal to 0 and less or equal to 1000.
The next N lines contains records about the customers in the following form ( record about the i-th customer is written in the (i+2)-th line):
A K1 K2 ... KA B It means that this customer has key to the pig-houses marked with the numbers K1, K2, ..., KA (sorted nondecreasingly ) and that he wants to buy B pigs. Numbers A and B can be equal to 0.
Output
Sample Input
3 3
3 1 10
2 1 2 2
2 1 3 3
1 2 6
Sample Output
7
题目连接:http://poj.org/problem?id=1149
题意:有m个猪圈,n个顾客。下一行输入m个猪圈里面猪的数量。接下来n行,每一行输入a,k1,k2,……,ka,b。表示这个顾客拥有ki猪圈的钥匙,他最多买的猪的数量b。开始时,猪圈是关着的,顾客来购买时,打开所有顾客自己能打开的猪圈,Mirko从中选一些猪卖给顾客,Mirko可以重新分配被打开的猪圈里面的猪。顾客离开后,猪圈关闭。问Mirko最多卖掉多少头猪。
思路:注意因为可以重新分配猪圈里面的猪,网络流的最大流。设置一个源点0和一个汇点n+1,顾客是其他节点。顾客j紧跟在顾客i之后打开某个猪圈,则边<i,j>的容量是+∞。如果某个猪圈是顾客j第一个打开则边<0,j>的容量是这个猪圈的数量。边<j,n+1>的容量是b。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
using namespace std;
const int MAXN=1e2+,INF=1e7+;
struct Edge
{
int c,f,g;
} edge[MAXN][MAXN];
int path[MAXN],flow[MAXN];
int sum[];
int sign[];
queue<int>q;
int bfs(int Start,int End)
{
int u,v;
memset(path,-,sizeof(path));
memset(flow,,sizeof(flow));
while(!q.empty()) q.pop();
path[Start]=;
flow[Start]=INF;
q.push(Start);
while(!q.empty())
{
u=q.front();
q.pop();
if(u==End) break;
for(v=Start; v<=End; v++)
{
if(v!=Start&&path[v]==-&&edge[u][v].g)
{
path[v]=u;
flow[v]=flow[u]<edge[u][v].g?flow[u]:edge[u][v].g;
q.push(v);
}
}
}
return flow[End];
}
int ford(int Start,int End)
{
int max_flow=,pre,now,step;
while((step=bfs(Start,End))!=)
{
max_flow+=step;
now=End;
while(now!=Start)
{
pre=path[now];
edge[pre][now].g-=step;
edge[now][pre].g+=step;
now=pre;
}
}
return max_flow;
}
int main()
{
int i,m,n;
while(~scanf("%d%d",&m,&n))
{
for(i=; i<=m; i++) scanf("%d",&sum[i]);
for(i=; i<=n; i++)
{
int a,k,b;
scanf("%d",&a);
while(a--)
{
scanf("%d",&k);
if(sign[k]==)
edge[sign[k]][i].c+=sum[k];
else edge[sign[k]][i].c=INF;
edge[sign[k]][i].g=edge[sign[k]][i].c;
sign[k]=i;
}
scanf("%d",&b);
edge[i][n+].g=edge[i][n+].c=b;
}
int Start=,End=n+;
printf("%d\n",ford(Start,End));
}
return ;
}
最大流
POJ 1149PIGS 网络流 最大流的更多相关文章
- POJ 1273 网络流(最大流)模板
http://poj.org/problem?id=1273 这道题很值得反思,弄了一下午,交上去先是一直编译错误,而在本地运行没有问题, 原因可能是oj的编译器版本老旧不支持这样的写法 G[from ...
- POJ 1459-Power Network(网络流-最大流-ISAP)C++
Power Network 时间限制: 1 Sec 内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...
- [POJ1273][USACO4.2]Drainage Ditches (网络流最大流)
题意 网络流最大流模板 思路 EK也不会超时 所以说是一个数据比较水的模板题 但是POJ有点坑,多组数据,而且题目没给 哭得我AC率直掉 代码 用的朴素Dinic #include<cstdio ...
- HDU 3081 Marriage Match II (网络流,最大流,二分,并查集)
HDU 3081 Marriage Match II (网络流,最大流,二分,并查集) Description Presumably, you all have known the question ...
- HDU1532 网络流最大流【EK算法】(模板题)
<题目链接> 题目大意: 一个农夫他家的农田每次下雨都会被淹,所以这个农夫就修建了排水系统,还聪明的给每个排水管道设置了最大流量:首先输入两个数n,m ;n为排水管道的数量,m为节点的数量 ...
- Redraw Beautiful Drawings(hdu4888)网络流+最大流
Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- A simple Gaussian elimination problem.(hdu4975)网络流+最大流
A simple Gaussian elimination problem. Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65 ...
- 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流
题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...
- 【bzoj1822】[JSOI2010]Frozen Nova 冷冻波 计算几何+二分+网络流最大流
题目描述 WJJ喜欢“魔兽争霸”这个游戏.在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵.我们认为,巫妖和小精灵都可以看成是平面上的点. 当巫妖和小精灵之间的直线 ...
随机推荐
- Java中serialVersionUID
报错信息如下: Adds a default serial version ID to the selected type. Use this option to add a user-defined ...
- .NET (四)委托第四讲:内置委托Comparison
// 摘要: // 表示比较同一类型的两个对象的方法. // // 参数: // x: // 要比较的第一个对象. // // y: // 要比较的第二个对象. // // 类型参数: // T: / ...
- JS 弹出层
var name='提示'; //网页名称,可为空; var iWidth=550; //弹出窗口的宽度; var iHeight=250; //弹出窗口的高度; var iTo ...
- Orcle基本语句(四)
--显示员工的编号,姓名,工资,工资级别,所在部门的名称;(使用emp表) SELECT * FROM emp; SELECT * FROM salgrade; SELECT * FROM dept; ...
- final的使用
final对基本类型,限定常量. final对对象的引用,不可引用其他对象. final的字段,必须在定义时或者构造器内完成初始化.构造内才完成初始化的Blank Final(空白final). cl ...
- VUE 入门基础(1)
一,安装 Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能模拟的 ECMAScript 5 特性. Vue.js 支持所有兼容 ECMAScript 5 的浏览器. ...
- jquery仿淘宝规格颜色选择效果
jquery实现的仿淘宝规格颜色选择效果源代码如下 jquery仿淘宝规格颜色选择效果 -收缩HTML代码 运行代码 [如果运行无效果,请自行将源代码保存为html文件运行] <script t ...
- C#中获得机器的字符编码webName信息
在一次解决编码的问题过程中,发现Encoding.GetEncoding("GB2312") == Encoding.GetEncoding("GBK"),到底 ...
- HTML5 的web储存: localStorage & sessionStorage
早期的浏览器使用cookie储存,HTML5新增web储存,包括:localStorage 和 sessiongStorage; localStorage:可以永久储存: sessionStorage ...
- information_schema.TABLES
获取所有表结构(TABLES) SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名'; TABLES表:提供了关于数据库中 ...