【BZOJ】1711: [Usaco2007 Open]Dining吃饭
【算法】最大流
【题解】
S连向食物连向牛连向牛‘连向饮料连向T。
经典的一个元素依赖于两个元素的建图方式。
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; const int maxn=100010,inf=0x3f3f3f3f; struct edge{int v,flow,from;}e[maxn]; int first[maxn],d[maxn],cur[maxn],tot=1,S,T,n,A,B; void insert(int u,int v,int w){//printf("%d %d\n",u,v);tot++;e[tot].v=v;e[tot].flow=w;e[tot].from=first[u];first[u]=tot;tot++;e[tot].v=u;e[tot].flow=0;e[tot].from=first[v];first[v]=tot; } queue<int>q; bool bfs(){memset(d,-1,sizeof(d));d[S]=0;q.push(S);while(!q.empty()){int x=q.front();q.pop();for(int i=first[x];i;i=e[i].from)if(e[i].flow&&d[e[i].v]==-1){d[e[i].v]=d[x]+1;q.push(e[i].v);}}return d[T]!=-1; } int dinic(int x,int a){if(x==T||a==0)return a;int flow=0,f;for(int& i=cur[x];i;i=e[i].from)if(e[i].flow&&d[e[i].v]==d[x]+1&&(f=dinic(e[i].v,min(e[i].flow,a)))>0){e[i].flow-=f;e[i^1].flow+=f;a-=f;flow+=f;if(a==0)break;}return flow; } int main(){scanf("%d%d%d",&n,&A,&B);S=0;T=A+n+n+B+1;int u,v,w;for(int i=1;i<=A;i++)insert(S,i,1);for(int i=1;i<=B;i++)insert(A+n+n+i,T,1);for(int i=1;i<=n;i++){scanf("%d%d",&u,&v);for(int j=1;j<=u;j++){scanf("%d",&w);insert(w,A+i,1);}for(int j=1;j<=v;j++){scanf("%d",&w);insert(A+n+i,A+n+n+w,1);}insert(A+i,A+n+i,1);}int ans=0;while(bfs()){for(int i=S;i<=T;i++)cur[i]=first[i];ans+=dinic(S,inf);}printf("%d",ans);return 0; }
View Code
转载于:https://www.cnblogs.com/onioncyc/p/7450535.html
【BZOJ】1711: [Usaco2007 Open]Dining吃饭相关推荐
- BZOJ 1711: [Usaco2007 Open]Dining吃饭
1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 902 Solved: 476 [Subm ...
- bzoj 1711: [Usaco2007 Open]Dining吃饭(最大流)
1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1107 Solved: 600 [Sub ...
- 1711: [Usaco2007 Open]Dingin吃饭
1711: [Usaco2007 Open]Dingin吃饭 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 560 Solved: 290 [Subm ...
- BZOJ 1692: [Usaco2007 Dec]队列变换( 贪心 )
数据 n <= 30000 , 然后 O( n² ) 的贪心也过了..... USACO 数据是有多弱啊 = = ( ps : BZOJ 1640 和此题一模一样 , 双倍经验 ) ------ ...
- [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花
1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 827 S ...
- BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】
1631: [Usaco2007 Feb]Cow Party [题目描述] 传送门 题解 正向建边,从X开始刷一趟SPFA,然后反向建边,从X刷一趟SPFA,最后两次的答案加和就可以了. 代码如下 # ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )
按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...
- [BZOJ] 1637: [Usaco2007 Mar]Balanced Lineup
1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec Memory Limit: 64 MB Submit: 697 Solved: 463 ...
- bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】
bzoj题面什么鬼啊-- 题目大意:有一个初始值均为0的数列,n次操作,每次将数列(ai,bi-1)这个区间中的数与ci取max,问n次后元素和 离散化,然后建立线段树,每次修改在区间上打max标记即 ...
最新文章
- TypeScript 3.4.5 发布,修复节点运行问题
- 第十六届全国大学生智能车提问与回复 |7月10日
- 程序集注册工具 (Regasm.exe)
- @所有城市:想建AI智算中心的看这里!国家认可的那种
- jupyterlab debugger+显示图片
- Java多线程(二):Callable和FutureTask结合使用获取返回值
- openstack--1--基础环境搭建
- 苏嵌第一天,shell中一些基础知识
- linux安装指定版本python_ubuntu多版本python为指定版本python安装库
- 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found
- mysql的time格式化_【mysql格式化日期】
- java小球游戏项目实战
- 【优化求解】基于matlab遗传算法求解车辆发车间隔优化问题【含Matlab源码 132期】
- 如何测网络稳定性_功率计如何测准极限低功率小信号
- 阿里java电话面试题
- 黑色的计算机英语造句,黑色英语怎么写
- Python实现2048小游戏
- leetcode-174-地下城游戏
- LogisticRegression函数
- GE Proficy CIMPLICITY如何实现跨版本升级操作?
热门文章
- 14 个写 Java 的习惯
- 面试官问:select......for update会锁表还是锁行?
- Intellij IDEA就这样配置,快到飞起!
- 2021数据挖掘赛题方案来了!
- 泪目!兰大硕导的《致谢》火了:我从来不曾优秀过,也从来不曾放弃过!
- 萌宝1天陪博士父母赶2场毕业典礼走红!上午是妈妈博士毕业,下午是爸爸......
- 还只是 39 岁!一个天才年轻程序员的陨落
- 你也许只使用到了 VS Code 20% 的功能
- 5 门前途美好的编程语言
- 我是如何通过开源项目月入 10 万的?