题意以及分析: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. Android自己主动化測试之Monkeyrunner用法及实例

    眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...

  2. 优先队列(priorityqueue)

    队列是先进先出的线性表,顾名思义,优先队列则是元素有优先级的队列,出列的顺序由元素的优先级决定.从优先队列中删除元素是根据优先权的高低次序,而不是元素进入队列的次序.优先队列的典型应用是机器调度等. ...

  3. tomcat 发布webService

    <!-- tomcat发布webservice时所需jar --> <dependency> <groupId>com.sun.xml.ws</groupId ...

  4. HTML1网页三部份内容

    网页三部份内容:HTML CSS Javascript 路径:一般做网页的时候用的相对路径. images/aaa.jpg 网页同一个目录中找images文件夹,再在images里面找aaa.jpg ...

  5. HMM模型详解

    http://www.cnblogs.com/skyme/p/4651331.html

  6. html css float left与 float right的使用说明

    点评: CSS中很多时候会用到浮动来布局,也就是经常见到的float:left或者float:right,简单点来说,前者是左浮动(往左侧向前边的非浮动元素飘,全是飘得元素的话,就按照流式来浮动从左到 ...

  7. python正则表达式练习篇

    练习一: 利用who命令输出所有已经登录系统的用户的信息,并把登录名.用户登录时的电传.登录时间.登录地址利用正则表达式分割开来. 数据的格式: %who wesc console Jun 20 20 ...

  8. Django模板-分离的模板

    上一篇Django模板-在视图中使用模板最后的问题,我们需要把数据和展现分离开. 你可能首先考虑把模板保存在文件系统的某个位置并用 Python 内建的文件操作函数来读取文件内容. 假设文件保存在 E ...

  9. AJAX+cURL+SimpleXMLElement处理数据

    curl_xml.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  10. Git客户端使用

    1.下载安装包 git:  https://git-for-windows.github.io/index.html tortoisegit: https://download.tortoisegit ...