题意:n牛m食品p饮品

第牛有ai种可行食品,bi种可行饮品

现在进行搭配,一头牛如果既有一份可行食品又有一份可行饮品就称为被满足。

求最多满足。

题解:

别忘了牛拆点、

代码:

#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 405 // 网络图中点
#define G 50000 // 网络图中边
#define inf 0x3f3f3f3f
using namespace std;
struct KSD
{int v,next,len;
}e[G];
int head[N],cnt;
void add(int u,int v,int len)
{cnt++;e[cnt].v=v;e[cnt].len=len;e[cnt].next=head[u];head[u]=cnt;
}
queue<int>q;
int d[N],s,t;
bool bfs()
{memset(d,0,sizeof(d));int i,u,v;while(!q.empty())q.pop();q.push(s),d[s]=1;while(!q.empty()){u=q.front(),q.pop();for(i=head[u];i;i=e[i].next)if(e[i].len){v=e[i].v;if(!d[v]){d[v]=d[u]+1;if(v==t)return 1;q.push(v);}}}return 0;
}
int dinic(int x,int flow)
{if(x==t)return flow;int remain=flow,k;int i,v;for(i=head[x];i&&remain;i=e[i].next){v=e[i].v;if(e[i].len&&d[v]==d[x]+1){k=dinic(v,min(remain,e[i].len));if(!k)d[v]=0;e[i^1].len+=k,e[i].len-=k;remain-=k;}}return flow-remain;
}
int n,m,p,maxflow;
bool work()
{if(scanf("%d%d%d",&n,&m,&p)==EOF)return 0;int i,a,b,c;s=n+n+m+p+1,t=n+n+m+p+2,cnt=1;memset(head,0,sizeof(head));maxflow=0;for(i=1;i<=n;i++)add(i,i+n,1),add(i+n,i,0);for(i=1;i<=m;i++)add(s,i+n+n,1),add(i+n+n,s,0);for(i=1;i<=p;i++)add(i+n+n+m,t,1),add(t,i+n+n+m,0);for(i=1;i<=n;i++){scanf("%d%d",&a,&b);while(a--){scanf("%d",&c);add(c+n+n,i,1),add(i,c+n+n,0);}while(b--){scanf("%d",&c);add(i+n,c+n+n+m,1),add(c+n+n+m,i+n,0);}}while(bfs())maxflow+=dinic(s,inf);printf("%d\n",maxflow);return 1;
}
int main()
{
//  freopen("test.in","r",stdin);while(work());
}

【POJ3281】Dining 网络流相关推荐

  1. POJ-3281 Dining 网络流最大流

    Dining 题意: 现在有一个养牛场厂主,他有F种食物,D种水,每种都只有一份. 现在他有n头牛,每种牛需要吃一份食物,一种水,对于每头牛来说 食物都有Fi种选项,水有Di种选项,各自都需要选一种. ...

  2. 解题报告 之 POJ3281 Dining

    解题报告 之 POJ3281 Dining Description Cows are such finicky eaters. Each cow has a preference for certai ...

  3. Dining(网络流,拆点, 最大流,详细注释)

    题目 POJ - 3281 题意 n只牛,f种食物,d种食物,每只牛都有喜欢的食物和饮料,每头牛都有各自喜欢的食物和饮料,每种食物或饮料只能分配给一头牛.问最多能有多少头牛可以同时得到喜欢的食物和饮料 ...

  4. poj3281 Dining (最大流)

    问题描述 牛是很挑食的.每头牛都偏爱特定的食物和饮料,其他的她都不吃. 农夫约翰为他的牛做了美味的饭菜,但他忘了根据它们的喜好检查菜单.虽然他可能不能填饱所有的人,但他想给尽可能多的奶牛提供一顿完整的 ...

  5. poj3281 - Dining

    想看更多的解题报告:http://blog.csdn.net/wangjian8006/article/details/7870410                                  ...

  6. 网络流专题班例题和练习

    文章目录 概 念 网络流图 可行流 可改进路(增广路) 残留网络 割 基本理论 求最大流思路 EK算法 dinic 最小费用最大流 EK+spfa dinic + spfa 例 题 poj Power ...

  7. Dinic求最大流/最小割

    o(v^2*E) 建图时建一条流量为0的反向边,正向边每减去流量f,反向边增加流量f.对于无向图当做两条边. cap:每条边最大流量 建图后: 调用DINIC():用bfs()为每个节点进行层次编号, ...

  8. linux 编译opencv 慢,opencv4.0 cuda10 编译速度太慢

    图论$\cdot$最短路问题 Dijkstra单源最短路径算法 Dijkstra可以计算出发点到每个点的最短路,及单源最短路径(SSSP).这一特点使得Dijkstra常常用来进行其他算法的预处理.用 ...

  9. Dining (网络流)

    题目链接:http://poj.org/problem?id=3281 题目大概: 一个农夫有食物和饮料来喂养n头牛,每头牛都有自己喜欢的食物和饮料,其他的不要,问最多养活几头牛. 思路: 模板来自大 ...

最新文章

  1. Spring Boot 2.x基础教程:使用 ECharts 绘制各种华丽的数据图表
  2. ZOJ 2849 Attack of Panda Virus (优先队列 priority_queue)
  3. SAP实施的难点在哪里?
  4. sas table将缺失值计入百分比_SAS:通过数据块填充缺失值
  5. Java扑克牌(多线程)
  6. [渝粤教育] 西南科技大学 建筑制图 在线考试复习资料
  7. si9000阻抗匹配计算_如何在设计之初计算出两层PCB板差分线的阻抗,线宽,间距...
  8. 同名字的数值求和插入行_EXCEL条件求和的6种技术,你会的超过3种吗?
  9. 腾讯花85亿买岛;微信发原图或泄露位置信息?高通逼因特尔把Modem芯片业务卖给苹果?小米9官网正式下架……...
  10. VINS-Mono代码分析与总结(完整版)
  11. 查询输出优秀人数_sql 第五关多表查询
  12. uniapp 微信小程序下载文件 完整方法
  13. oracle数据库可视化工具
  14. 广东联通光猫wo-27s华为HG8321R超级密码
  15. java导出excel水印_springboot为导出的pdf和excel加水印
  16. 如何取消html5微信页面授权,微信授权登录网页管理在哪里看?如何取消授权
  17. 网站设计之常见简单实用的JavaScript特效总结(上篇)
  18. 扩展正则表达式之加号
  19. Go语言处理Windows系统的图标ICO文件(上)
  20. 论文阅读-Training a Helpful and Harmless Assistant withReinforcement Learning from Human Feedback

热门文章

  1. 简信CRM:什么是在线CRM?在线CRM有什么好处?
  2. 2011不同阶层理财大盘点
  3. 天云大数据_【案例分享】天云大数据最佳实践系列之——信用评分模型
  4. opencv入门Vec3f
  5. 客户数据平台(CDP)是什么?
  6. 【MyBatis动态SQL批量修改数据出现报错问题】
  7. 自动量程万用表的实现原理_自动量程万用表的优缺点
  8. 文档在线打印,保持样式不变解决方法
  9. ctfshow七夕杯2022
  10. 网络直播课程:神马是敏捷?(直播时间:2014-7-14 20:00-21:00)