解题思路

应该比较显然得能看出这是个网络流,将$S$与房间连边,房间与人连边,人与菜连边,菜与汇点连边,边的流量均为1。但这样是错误的,因为有可能一个人跑过去2的流量,所以要将人拆点限流。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue> using namespace std;
const int MAXN = ;
const int MAXM = ;
const int inf = 0x3f3f3f3f; inline int rd(){
int x=;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x;
} int n,p,q,head[MAXN],cnt=,to[MAXM<<],nxt[MAXM<<],val[MAXM<<];
int ans,S,T=,d[MAXN];
queue<int> Q; inline void add(int bg,int ed,int w){
to[++cnt]=ed,nxt[cnt]=head[bg],val[cnt]=w,head[bg]=cnt;
} inline bool bfs(){
while(Q.size()) Q.pop();
memset(d,,sizeof(d));d[S]=;Q.push(S);
while(Q.size()){
int x=Q.front();Q.pop();
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(!d[u] && val[i]){
d[u]=d[x]+;
Q.push(u);
if(u==T) return true;
}
}
}
return false;
} int dinic(int x,int flow){
if(x==T) return flow;
int res=flow,k;
for(register int i=head[x];i && res;i=nxt[i]){
int u=to[i];
if(d[u]==d[x]+ && val[i]){
k=dinic(u,min(val[i],flow));
if(!k) d[u]=;
val[i]-=k;val[i^]+=k;res-=k;
}
}
return flow-res;
} int main(){
n=rd(),p=rd(),q=rd();int x;
for(int i=;i<=p;i++) add(S,i,),add(i,S,);
for(int i=;i<=n;i++)
for(int j=;j<=p;j++){
x=rd();if(!x) continue;
add(j,i+p,),add(i+p,j,);
}
for(int i=;i<=n;i++) add(i+p,i+p+n,),add(i+p+n,i+p,);
for(int i=;i<=n;i++)
for(int j=;j<=q;j++){
x=rd();if(!x) continue;
add(i+p+n,j+n*+p,),add(j+n*+p,i+p+n,);
}
for(int i=;i<=q;i++) add(i+n*+p,T,),add(T,i+n*+p,);
while(bfs()) ans+=dinic(S,inf);
cout<<ans;
return ;
}

LUOGU P1402 酒店之王 (网络流)的更多相关文章

  1. luogu P1402 酒店之王

    题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...

  2. BZOJ 1711 吃饭dining/Luogu P1402 酒店之王 拆点+最大流流匹配

    题意: (吃饭dining)有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享 ...

  3. P1402 酒店之王 网络流

    大水题,我自己瞎做就做出来了,没啥说的,zz建图,就是板子. 题干: 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等, ...

  4. 【luogu P1402 酒店之王】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1402 菜 #include <queue> #include <cstdio> #i ...

  5. 【题解】 Luogu P1402 酒店之王 (二分图匹配)

    懒得复制,原题目戳我 Solution: 这题没想到这么水,就是两个二分图而已 如果房间的二分图没匹配成功就直接进入下一个人 如果房间的二分图匹配成功,食物二分图匹配不成功就把房间的\(be[ ]\) ...

  6. P1402 酒店之王【网络流】【最大流】

    P1402 酒店之王 提交 5.39k 通过 2.16k 时间限制 1.00s 内存限制 125.00MB 题目提供者yeszy 难度省选/NOI- 历史分数100 提交记录 查看题解 标签 福建省历 ...

  7. Luogu 1402 酒店之王(二分图最大匹配)

    Luogu 1402 酒店之王(二分图最大匹配) Description XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自 ...

  8. 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码

    洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...

  9. P1402 酒店之王

    P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...

随机推荐

  1. vimtutor - Vim 教程

    总览 (SYNOPSIS) vimtutor 描述 (DESCRIPTION) Vimtutor 打开 Vim 教程. 它首先 考备 文件, 这样 就可以 在 不改变 原文件 的情况下 修改 当前文件 ...

  2. Java之Java的文件结构(才不是叛教!)

    Java从入门到恰饭之文件结构,使用IDEA开发. 新建包 包名一般选择公司域名(https://tieba.baidu.com/)的反转 创建完成是这样的 对应的三层文件夹 我们创建一个类 pack ...

  3. is与==的区别

    is:比较两边的内存地址是否一样 ==:比较两边的数据值是否一样 list1 = [1, 2] list2 = [1, 2] if list1 == list2: # == 是比较数据 print(' ...

  4. mysql 存储过程 随笔

    CREATE PROCEDURE `g2`( in sts int,in type int, code varchar(20),in s int)begin declare i int; declar ...

  5. 字符串dp——牛客多校第五场G

    比赛的时候脑瘫了没想出来..打多校以来最自闭的一场 显然从s中选择大于m个数组成的数必然比t大,所以只要dp求出从s中选择m个数大于t的方案数 官方题解是反着往前推,想了下反着推的确简单,因为高位的数 ...

  6. BZOJ 3083: 遥远的国度 (树剖+线段树)

    传送门 解题思路 前两个操作都比较基础.对于第三个操作分类讨论一下,首先如果当前根不是要操作点的子树,那么就无影响,直接查询操作点的子树即可.第二种是当前根是操作点的子树,那就找到当前根到操作点这条链 ...

  7. NX二次开发-NXOpen读取工程图注释note1->GetText();

    NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <NXOpen/Annotations_Note.hxx& ...

  8. [转]WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...

  9. [转] 多个文件目录下Makefile的写法

    1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...

  10. 记录一次像github开源项目提交pull request(Hexo Next)

    文章目录 背景 fork到自己github 像往常一样的操作 克隆到本地 与上游建立连接 创建分支 修改项目代码 收尾工作 提交pull request 个人博客:https://mmmmmm.me ...