POJ1149-PIGS
1,从各个顾客到汇点各有一条边,容量就是各个顾客能买的数量上限。
2,在某一轮中,从该顾客打开的所有猪圈都有一条边连向该顾客,容量都是∞。
3,最后一轮除外,从每一轮的i号猪圈都有一条边连向下一轮的i号猪圈,容量都是∞,表示这一轮剩下的猪可以留到下一轮。
4,最后一轮除外,从每一轮被打开的所有猪圈,到下一轮的同样这些猪圈,两两之间都要连一条边,表示它们之间可以任意流通。
![](/assets/blank.gif)
![](/assets/blank.gif)
#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相关推荐
- POJ1149 PIGS 题解
PKU 1149, PIGS,构造网络流模型时,要注意合并节点和边 ps: 本解题报告摘自 (点击上一行) 这道题目的大意是这样的: 有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪. ...
- POJ1149 PIGS(最大流)
题意: 有一个人,他有m个猪圈,每个猪圈里面有一定数量的猪,但是每个猪圈的门都是锁着的,他自己没有钥匙,只有顾客有钥匙,一天依次来了n个顾客,(记住是依次来的)他们每个人都有一些钥匙,和他 ...
- POJ1149 PIGS
luogu:嘟嘟嘟 poj:嘟嘟嘟 这是一道简化模型好题,这篇论文讲的太好了:网络流建模汇总,感觉我已经无需多讲. 但我这个代码没有合并相同边的容量,不过节点数是最少的. 1 #include< ...
- 竞赛程序设计知识要点图谱
一.基础算法 1.枚举法 POJ1248 Safecracker HDU1172 猜数字 POJ1543 Perfect Cubes POJ1046 Color Me Less 2.递归法:Hanoi ...
- poj1149迈克卖猪问题(PIGS)
/** 建图: <1>: 将顾客看作是除源点和汇点的结点,并且另设两个结点,源点和汇点 <2>:源点和每个猪圈的第一位顾客连边,边的权值是开始时猪圈中猪的数量 <3> ...
- leetcode-458-Poor Pigs
题目描述: There are 1000 buckets, one and only one of them contains poison, the rest are filled with wat ...
- 数量queuepoj1149 PIGS
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- POJ 1149 PIGS 最大流建模
点击打开链接 PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14204 Accepted: 6305 Desc ...
- 深度学习 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中对群养猪的进食行为识 ...
- POJ1149 最大流经典建图PIG
题意: 有一个人,他有m个猪圈,每个猪圈里都有一定数量的猪,但是他没有钥匙,然后依次来了n个顾客,每个顾客都有一些钥匙,还有他要卖猪的数量,每个顾客来的时候主人用顾客的钥匙打开相应的门,可 ...
最新文章
- bindservice启动服务
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
- SAP Spartacus Enable the unit to allow editing 的信息提示框实现
- mysql做主从复制配置案例
- 山东大学 2020级数据库系统 实验七
- Spring Boot加入websocket后,单元测试报错(javax.websocket.server.ServerContainer not available)
- 计算机的配置以及简单的操作
- c语言位运算测试题及答案,[原创] 位运算和bit位操作程序题目答案 -- 谭浩强C语言习题...
- 凸透镜成像实验软件_凸透镜成像6道例题(含详答)
- HDU2049 不容易系列之(4)考新郎 —— 错排
- 视频插帧算法之光流法
- 【条形码教程】如何批量识别条形码重命名图片,条形码条码识别批量识别快递单据条码并以条码重命名的方法
- 轻便简洁的电脑录音软件,免费收藏!
- 发明专利名称的撰写原则和技巧总结
- 神经网络及其在点云中的应用
- prototype.js开发者手册
- 常见的关系型数据库和非关系型数据及其区别
- 郑州大学计算机新媒体专业介绍,数字媒体专业介绍
- java面试题(一)Java面试问题集
- 初识Transact-SQL
热门文章
- 机房收费系统系列一:运行时错误‘-2147217843(80040e4d)’;用户‘sa’登陆失败...
- C++指针与引用的区别
- python在企业有哪些应用_python2和python3在企业中应用有哪些
- m.pythontab.com_python字符串连接的三种方法及其效率、适用场景详解
- 如何从stackoverflow的api 中获取是数据_教你拼多多如何选款、测款,打造出爆款。...
- java部署工具下载_Walle部署工具-Walle(开源部署工具)下载 v2.0.1官方版--pc6下载站...
- 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig
- 如何启用计算机超级账户,win7如何启用超级管理员账户 win7启用超级管理员账户方法介绍...
- php yii2支付宝开发,yii2 支付宝支付教程 [ 2.0 版本 ]
- xuanke java_wangshangxuankexitong - WEB源码|JSP源码/Java|源代码 - 源码中国