题意以及分析:http://ycool.com/post/zhhrrm6#rule3

  主要是建图,简化图,然后在套最大流的模板。

#include <iostream>
#include<string.h>
#include<cstdio>
using namespace std; struct Node
{
int v,cap,flow,next; Node(){}
Node(int _v,int _cap,int _flow,int _next)
{
v=_v;
cap=_cap;
flow=_flow;
next=_next;
}
}; const int INF=;
Node edges[];
int pig[],a[][];
int n,m,s,t,head[],e; void Add(int u,int v,int cap)
{
edges[e]=Node(v,cap,,head[u]);
head[u]=e++;
edges[e]=Node(u,,,head[v]);
head[v]=e++;
} int num[],h[],curedge[],pre[]; int Maxflow(int s,int t,int n)
{
int ans=,i,k,x,d,u; memset(num,,sizeof(num));
memset(h,,sizeof(h));
for(i=;i<=n;i++) curedge[i]=head[i];
num[n]=n;u=s;
while(h[u]<n)
{
if(u==t)
{
d=INF+;
for(i=s;i!=t;i=edges[curedge[i]].v) if(d>edges[curedge[i]].cap)
k=i,d=edges[curedge[i]].cap;
for(i=s;i!=t;i=edges[curedge[i]].v)
{
x=curedge[i];
edges[x].cap-=d;
edges[x].flow+=d;
edges[x^].cap+=d;
edges[x^].flow-=d;
}
ans+=d;u=k;
}
for(i=curedge[u];i!=-;i=edges[i].next) if(edges[i].cap>&&h[u]==h[edges[i].v]+)
break;
if(i!=-)
{
curedge[u]=i;
pre[edges[i].v]=u;
u=edges[i].v;
}
else
{
if(--num[h[u]]==) break;
curedge[u]=head[u];
for(x=n,i=head[u];i!=-;i=edges[i].next) if(edges[i].cap>&&h[edges[i].v]<x)
x=h[edges[i].v];
h[u]=x+;num[h[u]]++;
if(u!=s) u=pre[u];
}
}
return ans;
} int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
int i,j,x,p,num; s=;t=n+;
memset(head,-,sizeof(head));
e=;
for(i=;i<=m;i++) scanf("%d",&pig[i]);
for(i=;i<=m;i++) a[i][]=;
for(i=;i<=n;i++)
{
scanf("%d",&x);
while(x--) scanf("%d",&p),a[p][++a[p][]]=i;
scanf("%d",&num);
Add(i,t,num);
}
for(i=;i<=m;i++) if(a[i][]) Add(s,a[i][],pig[i]);
for(i=;i<=m;i++) for(j=;j<a[i][];j++) Add(a[i][j],a[i][j+],INF);
printf("%d\n",Maxflow(s,t,t));
}
return ;
}

poj 1149 pigs ---- 最大流的更多相关文章

  1. POJ 1149 - PIGS - [最大流构图]

    Time Limit: 1000MS Memory Limit: 10000K Description Mirko works on a pig farm that consists of M loc ...

  2. poj 1149 pigs(最大流)

    题目大意:迈克在农场工作,农场有 m 个猪舍,每个猪舍有若干只猪,但是迈克不能打开任何一间猪舍.有 n 个顾客前来购买,每个顾客有最大的购买数量,每个顾客可以购买某些猪舍的猪,且顾客可以打开这些猪舍, ...

  3. [poj] 1149 PIGS || 最大流经典题目

    原题 题目大意 给你m个猪圈以及每个猪圈里原来有多少头猪,先后给你n个人,每个人能打开一些猪圈并且他们最多想买Ki头猪,在每一个人买完后能将打开的猪圈中的猪顺意分配在这次打开猪圈里,在下一个人来之前 ...

  4. POJ 1149 PIGS(Dinic最大流)

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20738   Accepted: 9481 Description ...

  5. poj 1149 Pigs 网络流-最大流 建图的题目(明天更新)-已更新

    题目大意:是有M个猪圈,N个顾客,顾客要买猪,神奇的是顾客有一些猪圈的钥匙而主人MIRKO却没有钥匙,多么神奇?顾客可以在打开的猪圈购买任意数量的猪,只要猪圈里有足够数量的猪.而且当顾客打开猪圈后mi ...

  6. 网络流(最大流):POJ 1149 PIGS

    PIGS Time Limit: 1000ms Memory Limit: 10000KB This problem will be judged on PKU. 64-bit integer(整数) ...

  7. POJ 1149 PIGS(最大流)

    Description Mirko works on a pig farm that consists of M locked pig-houses and Mirko can't unlock an ...

  8. poj 1149 PIGS【最大流经典建图】

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18727   Accepted: 8508 Description ...

  9. poj 1149 PIGS(最大流经典构图)

    题目描述:迈克在一个养猪场工作,养猪场里有M 个猪圈,每个猪圈都上了锁.由于迈克没有钥匙,所以他不能打开任何一个猪圈.要买猪的顾客一个接一个来到养猪场,每个顾客有一些猪圈的钥匙,而且他们要买一定数量的 ...

随机推荐

  1. IE下支持文本框和密码框placeholder效果的JQuery插件

    基于jQuery实现的,主要用于IE下实现placeholder效果,可同时支持文本和密码输入框.placeholder是HTML5新增的一个属性,当input设置了该属性后,该值的内容将作为灰色提示 ...

  2. 获取json对象长度

    JSON对象变化万千,非常灵活,对应的获取方法分别为: 1.最简单类型的(myObject是对象,不是字符串哦) <script type="text/javascript" ...

  3. 成本卷积报错:CSTPSCEX.explode_sc_cost_flags():40:ORA-01476: 除数为 0

    成本卷积请求:供应链成本累计 - 打印报表 运行后报一下错误: MSG-00000: Rollup ID = 236403MSG-00000: Before CSTPSCEX.supply_chain ...

  4. ubuntu 配置JDK环境变量

    ubuntu 配置JDK环境变量 (2011-11-25 16:45:59) 转载▼ 标签: ubuntu jdk 环境变量 杂谈 分类: Linux_Ubuntu_CentOs 过程如下: 1. 先 ...

  5. spring集成mongodb jar包版本问题

    在开发过程中,spring集成mongodb的jar包. 如果需要使用排序功能. spring-data-mongodb-1.4.1.RELEASE.jar 的版本为1.4.1,如果使用如下代码: Q ...

  6. WdatePicker日历控件使用方法

    1. 跨无限级框架显示 无论你把日期控件放在哪里,你都不需要担心会被外层的iframe所遮挡进而影响客户体验,因为My97日期控件是可以跨无限级框架显示的 示例2-7 跨无限级框架演示 可无限跨越框架 ...

  7. php 截取字符串

    /** * 方法库-截取字符串-[该函数作者未知] * @param string $string 字符串 * @param int $length 字符长度 * @param string $dot ...

  8. python基础笔记-0

    python中数据结构,主要有列表.元组.字典.集合. python中最基本数据结构是序列(sequence).序列中每个元素被分配一个序号——即元素位置,也成为索引.第一个索引是0,第二个是1,以此 ...

  9. Python 提示 no module named win32api

    Windows下运行Python程序 提示错误  说是没有win32api的模块 解决办法 : 安装pywin32对应于Python的版本  可从https://sourceforge.net/pro ...

  10. Python urllib和urllib2模块学习(三)

    build_opener()详解: 1.urllib2.urlopen()函数不支持验证.cookie或者其它HTTP高级功能,要支持这些功能,必须使用build_opener()函数创建自定这句话的 ...