1,从各个顾客到汇点各有一条边,容量就是各个顾客能买的数量上限。

2,在某一轮中,从该顾客打开的所有猪圈都有一条边连向该顾客,容量都是∞。

3,最后一轮除外,从每一轮的i号猪圈都有一条边连向下一轮的i号猪圈,容量都是∞,表示这一轮剩下的猪可以留到下一轮。

4,最后一轮除外,从每一轮被打开的所有猪圈,到下一轮的同样这些猪圈,两两之间都要连一条边,表示它们之间可以任意流通。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
const int inf=0x3f3f3f3f;struct node{int v,w,nextt;
}e[100005];
int head[105],deep[105],cur[105];
int a[1005],sign[1005];
vector<int>b[105];
int s,t,tot;
inline int read(){int sum=0,x=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')x=0;ch=getchar();}while(ch>='0'&&ch<='9')sum=(sum<<1)+(sum<<3)+(ch^48),ch=getchar();return x?sum:-sum;
}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');
}
void addedge(int u,int v,int w){e[tot].v=v;e[tot].w=w;e[tot].nextt=head[u];head[u]=tot++;e[tot].v=u;e[tot].w=0;e[tot].nextt=head[v];head[v]=tot++;}
bool bfs(){for(int i=0;i<=t;i++)deep[i]=0;queue<int>que;que.push(s);deep[s]=1;while(!que.empty()){int u=que.front();que.pop();for(int i=head[u];~i;i=e[i].nextt){int v=e[i].v;if(e[i].w>0&&deep[v]==0){deep[v]=deep[u]+1;if(v==t)return true;que.push(v);}}}return deep[t]==0?false:true;
}
int dfs(int u,int fl){if(u==t)return fl;int x,ans=0;for(int i=cur[u];~i;i=e[i].nextt){int v=e[i].v;if(e[i].w>0&&deep[v]==deep[u]+1){x=dfs(v,min(fl-ans,e[i].w));ans+=x;e[i].w-=x;e[i^1].w+=x;if(e[i].w)cur[u]=1;if(ans==fl)return fl;}}if(ans==0)deep[u]=0;return ans;
}
int dinic(int n){int ans=0;while(bfs()){for(int i=0;i<=n;i++)cur[i]=head[i];ans+=dfs(s,inf);}return ans;
}
void init(int n){s=0,t=n+1;memset(head,-1,sizeof(head));
}
int main(){int m=read(),n=read();init(n);for(int i=1;i<=m;i++)a[i]=read();for(int i=1;i<=n;i++){int x=read(),y;while(x--){y=read();b[i].push_back(y);}y=read();addedge(i,t,y);}for(int i=1;i<=n;i++){for(int j=0;j<b[i].size();j++){int v=b[i][j];if(!sign[v]){sign[v]=i;addedge(s,i,a[v]);}else{addedge(sign[v],i,inf);sign[v]=i;}}}write(dinic(t));putchar('\n');return 0;
}

View Code

转载于:https://www.cnblogs.com/starve/p/10934492.html

POJ1149-PIGS相关推荐

  1. POJ1149 PIGS 题解

    PKU 1149, PIGS,构造网络流模型时,要注意合并节点和边 ps: 本解题报告摘自  (点击上一行) 这道题目的大意是这样的: 有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪. ...

  2. POJ1149 PIGS(最大流)

    题意:       有一个人,他有m个猪圈,每个猪圈里面有一定数量的猪,但是每个猪圈的门都是锁着的,他自己没有钥匙,只有顾客有钥匙,一天依次来了n个顾客,(记住是依次来的)他们每个人都有一些钥匙,和他 ...

  3. POJ1149 PIGS

    luogu:嘟嘟嘟 poj:嘟嘟嘟 这是一道简化模型好题,这篇论文讲的太好了:网络流建模汇总,感觉我已经无需多讲. 但我这个代码没有合并相同边的容量,不过节点数是最少的. 1 #include< ...

  4. 竞赛程序设计知识要点图谱

    一.基础算法 1.枚举法 POJ1248 Safecracker HDU1172 猜数字 POJ1543 Perfect Cubes POJ1046 Color Me Less 2.递归法:Hanoi ...

  5. poj1149迈克卖猪问题(PIGS)

    /** 建图: <1>: 将顾客看作是除源点和汇点的结点,并且另设两个结点,源点和汇点 <2>:源点和每个猪圈的第一位顾客连边,边的权值是开始时猪圈中猪的数量 <3> ...

  6. leetcode-458-Poor Pigs

    题目描述: There are 1000 buckets, one and only one of them contains poison, the rest are filled with wat ...

  7. 数量queuepoj1149 PIGS

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: ...

  8. POJ 1149 PIGS 最大流建模

    点击打开链接 PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14204   Accepted: 6305 Desc ...

  9. 深度学习 Feeding behavior recognition for group-housed pigs with the Faster R-CNN 论文篇

    Feeding behavior recognition for group-housed pigs with the Faster R-CNN -- 在Faster R-CNN中对群养猪的进食行为识 ...

  10. POJ1149 最大流经典建图PIG

    题意:       有一个人,他有m个猪圈,每个猪圈里都有一定数量的猪,但是他没有钥匙,然后依次来了n个顾客,每个顾客都有一些钥匙,还有他要卖猪的数量,每个顾客来的时候主人用顾客的钥匙打开相应的门,可 ...

最新文章

  1. bindservice启动服务
  2. java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
  3. SAP Spartacus Enable the unit to allow editing 的信息提示框实现
  4. mysql做主从复制配置案例
  5. 山东大学 2020级数据库系统 实验七
  6. Spring Boot加入websocket后,单元测试报错(javax.websocket.server.ServerContainer not available)
  7. 计算机的配置以及简单的操作
  8. c语言位运算测试题及答案,[原创] 位运算和bit位操作程序题目答案 -- 谭浩强C语言习题...
  9. 凸透镜成像实验软件_凸透镜成像6道例题(含详答)
  10. HDU2049 不容易系列之(4)考新郎 —— 错排
  11. 视频插帧算法之光流法
  12. 【条形码教程】如何批量识别条形码重命名图片,条形码条码识别批量识别快递单据条码并以条码重命名的方法
  13. 轻便简洁的电脑录音软件,免费收藏!
  14. 发明专利名称的撰写原则和技巧总结
  15. 神经网络及其在点云中的应用
  16. prototype.js开发者手册
  17. 常见的关系型数据库和非关系型数据及其区别
  18. 郑州大学计算机新媒体专业介绍,数字媒体专业介绍
  19. java面试题(一)Java面试问题集
  20. 初识Transact-SQL

热门文章

  1. 机房收费系统系列一:运行时错误‘-2147217843(80040e4d)’;用户‘sa’登陆失败...
  2. C++指针与引用的区别
  3. python在企业有哪些应用_python2和python3在企业中应用有哪些
  4. m.pythontab.com_python字符串连接的三种方法及其效率、适用场景详解
  5. 如何从stackoverflow的api 中获取是数据_教你拼多多如何选款、测款,打造出爆款。...
  6. java部署工具下载_Walle部署工具-Walle(开源部署工具)下载 v2.0.1官方版--pc6下载站...
  7. 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig
  8. 如何启用计算机超级账户,win7如何启用超级管理员账户 win7启用超级管理员账户方法介绍...
  9. php yii2支付宝开发,yii2 支付宝支付教程 [ 2.0 版本 ]
  10. xuanke java_wangshangxuankexitong - WEB源码|JSP源码/Java|源代码 - 源码中国