题目大意:迈克在农场工作,农场有 m 个猪舍,每个猪舍有若干只猪,但是迈克不能打开任何一间猪舍。有 n 个顾客前来购买,每个顾客有最大的购买数量,每个顾客可以购买某些猪舍的猪,且顾客可以打开这些猪舍,从中挑选猪仔。重要的是,迈克可以在打开的这些猪舍中重新分配猪仔。由于知道每个猪舍的猪仔数目和顾客的购买情况,求迈克可以卖出的最大数目的猪仔。

解题思路:将每个顾客看成一个点,加上源点、汇点。将每个猪舍的第一位客人与源点相连,容量为猪舍中猪仔的数目,将每个猪圈的前以为顾客与后一位顾客相连,容量为INF,将每位顾客与汇点相连,容量为顾客的最大购买量。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
int m,n,f,tag[1001];
queue<int> Q;
struct edge{
int from;
int to;
int flow;
int cap;
};
vector<edge>e;
vector<int>adj[1200]; void init(){
f = 0;
for(int i=0;i<=n+m+1;i++)
adj[i].clear();
} void addedge(int from,int to,int flow,int cap){
e.push_back((edge){from,to,flow,cap});
e.push_back((edge){to,from,flow,0});
int t = e.size();
adj[from].push_back(t - 2);
adj[to].push_back(t - 1);
} void solve(){
int i,j,a[1200],p[1200];
for( ; ; ){
memset(a,0,sizeof(a));
a[0] = 10000000;
while(!Q.empty())
Q.pop();
Q.push(0);
while(!Q.empty()){
int x = Q.front();
Q.pop();
for(i=0;i<adj[x].size();i++){
int t = adj[x][i] ;
int v = e[t].to;
if(!a[v] && e[t].flow < e[t].cap){
a[v] = a[x] < e[t].cap - e[t].flow ? a[x] : e[t].cap - e[t].flow;
Q.push(v);
p[v] = t ;
}
}
} if(!a[n+1])
break;
int u = n+1;
for( ; u != 0; u = e[p[u]].from){
e[p[u]].flow += a[n+1] ;
e[p[u] ^ 1].flow -= a[n+1] ;
}
f += a[n+1] ;
}
} int main(){
int i,j,a,b;
int p[1001],c[1001],x;
while(scanf("%d%d",&m,&n) == 2){
init();
for(i=1;i<=m;i++)
cin >> c[i] ;
memset(tag,0,sizeof(tag));
for(i=1;i<=n;i++){
cin >> a ;
for(j=1;j<=a;j++){
cin >> x ;
if(!tag[x]){
addedge(0,i,0,c[x]);
tag[x] = i ;
}
else
addedge(tag[x],i,0,100000);
}
cin >> b ;
addedge(i,n+1,0,b);
} solve(); printf("%d\n",f);
}
return 0;
}

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 ---- 最大流

    题意以及分析:http://ycool.com/post/zhhrrm6#rule3 主要是建图,简化图,然后在套最大流的模板. #include <iostream> #include& ...

  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. 【hihoCoder第十七周】最近公共祖先·三

    之前就写的是离线算法.思路就是先序一遍树,记录层数,然后高效RMQ就好.ST和线段树都能过. 以后有时间将之前的在线算法补上. #include <bits/stdc++.h> using ...

  2. redis 学习笔记二 (简单动态字符串)

    redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; char data[0]; }; 这是个广泛使用的常见技巧,常用来 ...

  3. [iOS] Create TableView & customize UITableViewCell

    1. First artical, notice the last thing - Connecting the DataSource and Delegate: http://www.appcoda ...

  4. 解决IE6下DIV无法实现1px高度问题

    2.多加一个line-height:1px的属性,不过得在DIV里多加一个 ,也就是空格,以下为引用的内容: <styletypestyletype="text/css"&g ...

  5. HTML特殊符号显示技巧

    转:http://www.cnblogs.com/JessonChan/archive/2011/08/06/2129170.html HTML符号 显示一览表.编辑博客的时候经常会用到.特别是空格( ...

  6. iOS中自动释放问题?

    --前言:iOS开发中关于对象的释放问题,虽然知道规则,但总不清楚自动释放的对象什么时候彻底消失?它存在的多久?什么情况会消失?都不清楚,每次用自动释放对象,总有点心虚的感觉,以下是一些例子.研究. ...

  7. WAS集群系列(6):集群搭建:步骤4:安装WAS升级软件

    逐步点击"下一步",注意一处流程,例如以下列举: "升级软件"安装的路径设置,建议与之前的WAS及IHS安装的绝对路径同样,例如以下所看到的: 逐步点击,完毕安 ...

  8. LDAP禁止匿名访问

    LDAP默认是允许用户匿名访问的,如下图:在使用工具连接时,勾选匿名绑定后,不需要输入UserDN和密码就可能连接到LDAP服务器,但是只能进行read及search操作.不能做任何的修改及删除操作. ...

  9. mongodb.open失效导致访问地址404

    今天做编辑文章功能的时候发现一个问题,编辑并保存完成后再次跳转到当前文章所在的地址,结果报404,打断点发现查询数据库的时候mongodb.open方法失效.百度后找到了原因: 编辑保存的时候打开了数 ...

  10. Android下按钮的使用方法

    package com.hangsheng.button; import android.app.Activity; import android.os.Bundle; import android. ...