题意以及分析: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. 【最大团】【HDU1530】【Maximum Clique】

    先上最大团定义: 最大团问题(Maximum Clique Problem, MCP)是图论中一个经典的组合优化问题,也是一类NP完全问题,在国际上已有广泛的研究,而国内对MCP问题的研究则还处于起步 ...

  2. springmvc 传递和接收数组参数

    java url中如何传递数组,springMVC框架controller类如何接收数组参数? 下面介绍一下URL中传递数组参数方法: dd.do?titles[]=col1&titles[] ...

  3. 图片占位 css

    手机端图片高度和宽度不能自动比例缩小的问题 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  4. php之Cookie与Session详解

    Cookie管理 Cookie是在HTTP协议下,通过服务器或脚本语言可以维护客户浏览器上信息的一种方式,Cookie的使用很普遍,许多提供个人化服务的网站都是利用Cookie来区别不同用户,以显示与 ...

  5. SVN(一次检出&二次检出)

    一次检出: >进入经历文件夹 >输入svn checkout指令 >输入电脑密码 >输入用户名 >输入密码 >检出成功 第二次检出: >进入小涛文件夹 > ...

  6. Android 自定义shape圆形按钮

    Shape的属性: solid 描述:内部填充 属性:android:color 填充颜色 size 描述:大小 属性: android:width 宽 android:height 高 gradie ...

  7. Django模板-在视图中使用模板

    之前我们已经有了自己的视图mysite.views.py中,应该是这样子的 from django.http import HttpResponse import datetime def curre ...

  8. 【翻译】MVC Music Store 教程-概述(一)

    MVC Music Store教程介绍和说明了如何一步步的用ASP.NET MVC 和Visual Web Developer 进行Web开发,教程从最基础的阶段开始,所以对于初级阶段的开发者来说,也 ...

  9. Qt5.3.0 for android windows平台下搭建及demo(虫子的博客)

    ----我的生活,我的点点滴滴!! 部门领导突然心血来潮,想在android平台上做应用,但是我们大多产品属于嵌入式(本吊只负责写写应用,苦比的被强行顶过来搞这,由于这还得领导吵了一架,架虽然吵完了, ...

  10. Delphi 实现任务栏多窗口图标显示

    uses Windows; type TfrmLogin = class(TForm) end; implementation {$R *.dfm} procedure TfrmLogin.FormC ...