【算法】最大流

【题解】

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吃饭相关推荐

  1. BZOJ 1711: [Usaco2007 Open]Dining吃饭

    1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 902  Solved: 476 [Subm ...

  2. bzoj 1711: [Usaco2007 Open]Dining吃饭(最大流)

    1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1107  Solved: 600 [Sub ...

  3. 1711: [Usaco2007 Open]Dingin吃饭

    1711: [Usaco2007 Open]Dingin吃饭 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 560  Solved: 290 [Subm ...

  4. BZOJ 1692: [Usaco2007 Dec]队列变换( 贪心 )

    数据 n <= 30000 , 然后 O( n² ) 的贪心也过了..... USACO 数据是有多弱啊 = = ( ps : BZOJ 1640 和此题一模一样 , 双倍经验 ) ------ ...

  5. [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花

    1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 827  S ...

  6. BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】

    1631: [Usaco2007 Feb]Cow Party [题目描述] 传送门 题解 正向建边,从X开始刷一趟SPFA,然后反向建边,从X刷一趟SPFA,最后两次的答案加和就可以了. 代码如下 # ...

  7. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )

    按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...

  8. [BZOJ] 1637: [Usaco2007 Mar]Balanced Lineup

    1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 697  Solved: 463 ...

  9. bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】

    bzoj题面什么鬼啊-- 题目大意:有一个初始值均为0的数列,n次操作,每次将数列(ai,bi-1)这个区间中的数与ci取max,问n次后元素和 离散化,然后建立线段树,每次修改在区间上打max标记即 ...

最新文章

  1. TypeScript 3.4.5 发布,修复节点运行问题
  2. 第十六届全国大学生智能车提问与回复 |7月10日
  3. 程序集注册工具 (Regasm.exe)
  4. @所有城市:想建AI智算中心的看这里!国家认可的那种
  5. jupyterlab debugger+显示图片
  6. Java多线程(二):Callable和FutureTask结合使用获取返回值
  7. openstack--1--基础环境搭建
  8. 苏嵌第一天,shell中一些基础知识
  9. linux安装指定版本python_ubuntu多版本python为指定版本python安装库
  10. 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found
  11. mysql的time格式化_【mysql格式化日期】
  12. java小球游戏项目实战
  13. 【优化求解】基于matlab遗传算法求解车辆发车间隔优化问题【含Matlab源码 132期】
  14. 如何测网络稳定性_功率计如何测准极限低功率小信号
  15. 阿里java电话面试题
  16. 黑色的计算机英语造句,黑色英语怎么写
  17. Python实现2048小游戏
  18. leetcode-174-地下城游戏
  19. LogisticRegression函数
  20. GE Proficy CIMPLICITY如何实现跨版本升级操作?

热门文章

  1. 14 个写 Java 的习惯
  2. 面试官问:select......for update会锁表还是锁行?
  3. Intellij IDEA就这样配置,快到飞起!
  4. 2021数据挖掘赛题方案来了!
  5. 泪目!兰大硕导的《致谢》火了:我从来不曾优秀过,也从来不曾放弃过!
  6. 萌宝1天陪博士父母赶2场毕业典礼走红!上午是妈妈博士毕业,下午是爸爸......
  7. 还只是 39 岁!一个天才年轻程序员的陨落
  8. 你也许只使用到了 VS Code 20% 的功能
  9. 5 门前途美好的编程语言
  10. 我是如何通过开源项目月入 10 万的?