传送门

分析

网络流板子很好敲,难就难在建模上

不过ldw老师说建模学好后,对图论很有帮助

所以,还是要好好干网络流啊

这道题建4排点,第一排是食物,第二排和第三排都是牛,第四排是饮料,然后再多个源汇点

为什么第二三排都是牛呢?

因为要保证每头牛都只被匹配过一次

拆点就是一个非常常规的操作了

代码

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
#define in read()
#define M 4000000
#define inf 10000
#define N 500
using namespace std;
inline int read(){char ch;int f=1,res=0;while((ch=getchar())<'0'||ch>'9') if(ch=='-') f=-1;while(ch>='0'&&ch<='9'){res=(res<<3)+(res<<1)+ch-'0';ch=getchar();}return f==1?res:-res;
}
int n,f,d,S=0,T;
int nxt[M],to[M],cap[M],head[N],cur[N],cnt=1,lev[N];
void add(int x,int y,int z){nxt[++cnt]=head[x];head[x]=cnt;to[cnt]=y;cap[cnt]=z;
}
bool bfs(){memcpy(cur,head,sizeof(head));for(int i=S;i<=T;++i) lev[i]=-1;queue<int > q;q.push(S);lev[S]=0;while(!q.empty()){int u=q.front();q.pop();for(int e=head[u];e;e=nxt[e]){int v=to[e];if(lev[v]!=-1||cap[e]<=0) continue;lev[v]=lev[u]+1;if(v==T) return true;q.push(v);            }}return false;
}
int dinic(int u,int flow){if(u==T) return flow;int delta,res=0;for(int &e=cur[u];e;e=nxt[e]){int v=to[e];if(lev[v]>lev[u]&&cap[e]>0){delta=dinic(v,min(cap[e],flow-res));if(delta){res+=delta;cap[e]-=delta;cap[e^1]+=delta;if(res==flow) return flow;}}}return res;
}
int main(){n=in;f=in;d=in;T=f+d+2*n+1;int i,j,k,a,b;for(i=1;i<=f;++i){    add(S,i,1);add(i,S,0);}//稍微画个图就可以了 for(i=1;i<=n;++i){ add(f+i,f+i+n,1);add(f+i+n,f+i,0);}for(i=1;i<=d;++i){ add(f+2*n+i,T,1);add(T,f+2*n+i,0);}for(i=1;i<=n;++i){a=in;b=in;for(j=1;j<=a;++j) {int t=in;add(t,i+f,1);add(i+f,t,0);}for(j=1;j<=b;++j){int t=in;add(i+f+n,f+2*n+t,1);add(f+2*n+t,i+f+n,0);}}int maxflow=0;while(bfs()) maxflow+=dinic(S,inf);printf("%d\n",maxflow);return 0;
}

1010 - 网络流 - dining(POJ 3281)相关推荐

  1. B - Dining POJ - 3281 -网络流拆点模板

    B - Dining POJ - 3281 题意:一些牛,每只牛有 一些  想吃的food and milk,然后问最大能够满足多少只牛. 满足是指的这头牛即能吃到他喜欢吃的又能喝到他喜欢喝的 思路: ...

  2. Dining POJ - 3281 (网络流)

    传送门 题意:农夫约翰为他的N头牛准备了F种食物和D种饮料.每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛.最多能有多少头牛同时得到自己喜欢的食物和饮料? 题解:如果只是分配食物的话 ...

  3. Dining POJ - 3281

    题意: f个食物,d杯饮料,每个牛都有想吃的食物和想喝的饮料,但食物和饮料每个只有一份 求最多能满足多少头牛.... 解析: 一道简单的无源汇拆点最大流   无源汇的一个最大流,先建立超级源s和超级汇 ...

  4. POJ.3281 dining 最大流+拆点

    POJ.3281 dining 最大流+拆点 思路清晰为啥一直WA呢 #include <iostream> #include <cstring> #include <v ...

  5. 解题报告:POJ 3281 Dining(最大流 / “三分图”建图)

    B.POJ 3281 DiningDiningDining(最大流/建图模板)[省选/NOI- ] 有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料.现 ...

  6. Poj 3281 Regional Chengdu Food(Dicnic)

    网络流最大流的优化算法Dicnic,每一步对原图进行分层,然后用DFS求增广路.时间复杂度是O(n^2*m) . Poj 3281 和 9.16号成都regional网络赛food那道题,都是很好的模 ...

  7. 【POJ - 3281】Dining(拆点建图,网络流最大流)

    题干: Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she wi ...

  8. POJ - 3281 Dining(最大流+思维建边)

    题目链接:点击查看 题目大意:给出n头奶牛,f种食物,d种饮料,每只奶牛可以选择数种食物和饮料,但每种食物和饮料只有一份,现在问最多能让多少头奶牛同时满足食物和饮料的条件 题目分析:最大流的题目,不过 ...

  9. poj 3281 Dining 最大流

    题目链接 一开始的想法就是food-cow-water,但是wa了,看了别人的思路知道每一只牛牛用一条边隔开,然后就达到了限流的效果. 所以 食物-->牛牛---->牛牛---->w ...

最新文章

  1. 分布式事务之消息补偿解决方案
  2. R语言应用实战-基于R语言的判别分析:fisher判别法,距离判别法以及Bayers判别法(附源代码)
  3. Chrome 开发工具之Network
  4. mwArray与C++接口
  5. WARN RestSubmissionClient: Unable to connect to server spark://master:
  6. Customing 维护中TR弹出逻辑
  7. python怎么暂停爬虫_python Python爬虫防封杀方法集合
  8. android ROM ---(1)高通平台 Android O 升级学习
  9. open打开新窗口时的选项
  10. schedule event mysql_mysql计划任务:event schedule
  11. 每天一点Linux --- 在Linux终端下调用当前目录下的可执行文件时需要加上./的原因...
  12. 疫情地图 | 低代码制作全国重点管控地区行政区地图(截至4月16日)
  13. 货币代码php,在PHP中获取货币符号
  14. x390开机键_【ThinkPadX390评测】ThinkPad X390 4G版全球首测:全时在线超长续航的便携商务利器(全文)_ThinkPad X390_笔记本评测-中关村在线...
  15. Lua程序设计任务系统和NPC
  16. 会话、Cookie、Session、url重写
  17. Arduino 编译出错:Pixy2I2C.h: No such file or directory
  18. python绘制一个时间的七段数码管实例基本的七段数码管绘制
  19. mysql数据库有关教程
  20. 多线程、并发/并行、自定义线程类、线程安全、守护线程、定时器、线程状态、线程池

热门文章

  1. LoRa PHY帧格式详细介绍
  2. 【免杀】加花指令秒过杀?
  3. 斯人已化蝶,逝者如斯夫……
  4. hosts.deny
  5. SOLIDWORKS如何画正四面体
  6. VS WinExec 打开cmd执行命令
  7. Ubuntu+win10双系统删除win10,仅保留Ubuntu方法并扩容Ubuntu方法
  8. ABAP 随机时间戳解码问题 SOTR_MESS 032
  9. openstack windows 10 image - windows 10 镜像制作
  10. 针对新冠病毒,盛普始终坚持多靶标协同的防治病毒药物研发