博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Poj3281]Dining(最大流)
阅读量:6657 次
发布时间:2019-06-25

本文共 1713 字,大约阅读时间需要 5 分钟。

Description

有n头牛,f种食物,d种饮料,每头牛有nf种喜欢的食物,nd种喜欢的饮料,每种食物如果给一头牛吃了,那么另一个牛就不能吃这种食物了,饮料也同理,问最多有多少头牛可以吃到它喜欢的饮料和食物。

Solution

巧妙地建一下图跑最大流即可

因为有食物和饮料2种条件,不难想到把牛放在中间,食物饮料放两边连边建图

但实际上这样可能会让一头牛被重复计入答案,一头牛可能同时满足两种不同的方案

所以把牛拆成2个点即可

Code

#include 
#include
#define N 666#define Inf 0x7fffffffusing namespace std;struct info{int to,nex,f;}e[100010];int n,f,d,T,S,tot,nodes,head[N],Ans,cnt[N],dis[N];inline void Link(int u,int v,int f){ e[++tot].to=v;e[tot].nex=head[u];head[u]=tot;e[tot].f=f; e[++tot].to=u;e[tot].nex=head[v];head[v]=tot;e[tot].f=0;}inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline void Init(){ n=read(),f=read(),d=read(); S=0,tot=1,nodes=(T=f+d+n*2+1)+1; for(int i=1;i<=f;++i) Link(S,i,1); for(int i=1;i<=d;++i) Link(f+n*2+i,T,1); for(int i=1;i<=n;++i) Link(f+i,f+n+i,1); for(int i=1;i<=n;++i){ int nf=read(),nd=read(); while(nf--){int t=read();Link(t,i+f,1);} while(nd--){int t=read();Link(i+f+n,f+n*2+t,1);} }}int sap(int u,int d){ if(u==T) return d; int sum=0,mins=nodes; for(int i=head[u];i;i=e[i].nex){ int v=e[i].to; if(e[i].f>0&&dis[u]==dis[v]+1){ int save=sap(v,min(d-sum,e[i].f)); sum+=save; e[i].f-=save; e[i^1].f+=save; if(dis[S]>=nodes||sum==d) return sum; } if(e[i].f>0) mins=min(mins,dis[v]); } if(!sum){ if(!(--cnt[dis[u]])) dis[S]=nodes; else ++cnt[dis[u]=mins+1]; } return sum;}void SAP(){cnt[0]=nodes;while(dis[S]

转载于:https://www.cnblogs.com/void-f/p/8463422.html

你可能感兴趣的文章
如何使用Exchange Web Service获取日历(包含循环会议)
查看>>
Oracle二三事之 EBS升级
查看>>
C# DEV XtraGrid
查看>>
【SAS NOTES】data set if
查看>>
关于C#的Process的内存相关属性解读
查看>>
Android 编程下快捷图标的创建
查看>>
C++ GUI Qt4 自学笔记——Qt qmake命令
查看>>
烂透了与棒极了
查看>>
修改10g自动统计信息收集作业GATHER_STATS_JOB到仅仅周末执行
查看>>
Calibrate测试Exadata IO
查看>>
【C语言】15-预处理指令1-宏定义
查看>>
【C语言】19-static和extern关键字1-对函数的作用
查看>>
9、单机运行环境搭建之 --CentOS-6.4下mysqldump 备份与还原数据库
查看>>
分享:C++中头文件、源文件之间的区别与联系
查看>>
好类 笔记
查看>>
Web前端浏览器兼容初探【转】
查看>>
菜鸟开技术博啦
查看>>
关于多线程生命周期原理
查看>>
如何使用U盘安装操作系统 安装GHOST XP, xp纯净版
查看>>
POJ 1062 昂贵的聘礼
查看>>