P2891 [USACO07OPEN]吃饭Dining
漂亮小姐姐点击就送:https://www.luogu.org/problemnew/show/P2891
题目描述
Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others.
Farmer John has cooked fabulous meals for his cows, but he forgot to check his menu against their preferences. Although he might not be able to stuff everybody, he wants to give a complete meal of both food and drink to as many cows as possible.
Farmer John has cooked F (1 ≤ F ≤ 100) types of foods and prepared D (1 ≤ D ≤ 100) types of drinks. Each of his N (1 ≤ N ≤ 100) cows has decided whether she is willing to eat a particular food or drink a particular drink. Farmer John must assign a food type and a drink type to each cow to maximize the number of cows who get both.
Each dish or drink can only be consumed by one cow (i.e., once food type 2 is assigned to a cow, no other cow can be assigned food type 2).
有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料。现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。(1 <= f <= 100, 1 <= d <= 100, 1 <= n <= 100)
输入输出格式
输入格式:
Line 1: Three space-separated integers: N, F, and D
Lines 2..N+1: Each line i starts with a two integers Fi and Di, the number of dishes that cow i likes and the number of drinks that cow i likes. The next Fi integers denote the dishes that cow i will eat, and the Di integers following that denote the drinks that cow i will drink.
输出格式:
Line 1: A single integer that is the maximum number of cows that can be fed both food and drink that conform to their wishes
输入输出样例
说明
One way to satisfy three cows is:
Cow 1: no meal
Cow 2: Food #2, Drink #2
Cow 3: Food #1, Drink #1
Cow 4: Food #3, Drink #3
The pigeon-hole principle tells us we can do no better since there are only three kinds of food or drink. Other test data sets are more challenging, of course.
// luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std; const int N=1e4+;
const int M=3e4+;
const int INF=0x7fffffff; int n,F,D,S,T;
int head[N],num_edge;
struct Edge
{
int v,flow,nxt;
}edge[M<<]; inline int read()
{
char c=getchar();int num=,f=;
for(;!isdigit(c);c=getchar())
f=c=='-'?-:f;
for(;isdigit(c);c=getchar())
num=num*+c-'';
return num*f;
} inline void add_edge(int u,int v,int flow)
{
edge[++num_edge].v=v;
edge[num_edge].flow=flow;
edge[num_edge].nxt=head[u];
head[u]=num_edge;
} int dep[N];
inline bool bfs()
{
memset(dep,,sizeof(dep));
queue<int> que;
que.push(S),dep[S]=;
int now,v;
while(!que.empty())
{
now=que.front(),que.pop();
for(int i=head[now];i;i=edge[i].nxt)
{
if(edge[i].flow)
{
v=edge[i].v;
if(dep[v])
continue;
dep[v]=dep[now]+;
if(v==T)
return ;
que.push(v);
}
}
}
return ;
} int dfs(int now,int flow)
{
if(now==T)
return flow;
int outflow=,tmp,v;
for(int i=head[now];i;i=edge[i].nxt)
{
if(edge[i].flow)
{
v=edge[i].v;
if(dep[v]!=dep[now]+)
continue;
tmp=dfs(v,min(flow,edge[i].flow));
if(tmp)
{
outflow+=tmp;
flow-=tmp;
edge[i].flow-=tmp;
edge[i^].flow+=tmp;
if(!flow)
return outflow;
}
}
}
dep[now]=;
return outflow;
} int main()
{
num_edge=;
n=read(),F=read(),D=read();
T=F+D+n*+;
for(int i=;i<=n;++i)
{
add_edge(i+F,i+F+n,);
add_edge(i+F+n,i+F,);
}
for(int i=;i<=F;++i)
{
add_edge(S,i,);
add_edge(i,S,);
}
for(int i=;i<=D;++i)
{
add_edge(i+F+*n,T,);
add_edge(T,i+F+n*,);
}
for(int i=,a,b,c;i<=n;++i)
{
b=read(),c=read();
while(b--)
{
a=read();
add_edge(a,i+F,);
add_edge(i+F,a,);
}
while(c--)
{
a=read();
add_edge(i+F+n,a+F+n*,);
add_edge(a+F+n*,i+F+n,);
}
}
int flow=;
while(bfs())
flow+=dfs(S,INF);
printf("%d",flow);
return ;
}
P2891 [USACO07OPEN]吃饭Dining的更多相关文章
- P2891 [USACO07OPEN]吃饭Dining(最大流+拆点)
题目描述 Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she w ...
- P2891 [USACO07OPEN]吃饭Dining 最大流
\(\color{#0066ff}{ 题目描述 }\) 有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类 ...
- 洛谷P2891 [USACO07OPEN]吃饭Dining
题目描述 Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she w ...
- 洛谷 P2891 [USACO07OPEN]吃饭Dining
裸的最大流. #include <cstdio> #include <cstring> #include <queue> const int MAXN = 4e3 ...
- 「洛谷P2891」[USACO07OPEN]吃饭Dining 解题报告
P2891 [USACO07OPEN]吃饭Dining 题目描述 Cows are such finicky eaters. Each cow has a preference for certain ...
- [Luogu P2891/POJ 3281/USACO07OPEN ]吃饭Dining
传送门:https://www.luogu.org/problemnew/show/P2891 题面 \ Solution 网络流 先引用一句真理:网络流最重要的就是建模 今天这道题让我深有体会 首先 ...
- [USACO07OPEN]吃饭Dining
嘟嘟嘟 这应该是网络流入门题之一了,跟教辅的组成这道题很像. 把每一只牛看成书,然后对牛拆点,因为每一只牛只要一份,食物和饮料分别看成练习册和答案. #include<cstdio> #i ...
- bzoj1711[USACO07OPEN]吃饭Dining
题意 有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮 ...
- BZOJ 1711 吃饭dining/Luogu P1402 酒店之王 拆点+最大流流匹配
题意: (吃饭dining)有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享 ...
随机推荐
- Fiddler讲解2
想要 浏览更多Fiddler内容:请点击进入Fiddler官方文档 阅读目录: 一.查看网络流量: 二.检查网络流量: 三.查看Web会话摘要: 四.查看Web会话统计信息: 五.查看Web会话内容: ...
- Consul微服务的配置中心体验篇
Spring Cloud Consul 项目是针对Consul的服务治理实现.Consul是一个分布式高可用的系统,具有分布式.高可用.高扩展性 Consul Consul 是 HashiCorp 公 ...
- 记一次SQL PLUS 不能登录的异常处理
记一次SQL PLUS 不能登录的异常处理 现象 通过远程PLSQL Developer 访问数据发现卡死没响应. 通过Sqlplus 访问数据同样hang死在登录界面,且不能通过Ctrl+C取消 [ ...
- c# 克隆来创建对象副本
- python编码和解码
一.什么是编码 编码是指信息从一种形式或格式转换为另一种形式或格式的过程. 在计算机中,编码,简而言之,就是将人能够读懂的信息(通常称为明文)转换为计算机能够读懂的信息.众所周知,计算机能够读懂的是高 ...
- web开发常见的鉴权方式
结合网上找的资料整理了一下,以下是web开发中常见的鉴权方法: 预备:一些基本的知识 RBAC(Role-Based Access Control)基于角色的权限访问控制(参考下面①的连接) l ...
- 开源框架---tensorflow c++ API 一个卡了很久的问题
<开源框架---tensorflow c++ API 运行第一个“手写字的例子”> 中可以说明tensorflow c++ API是好用的,.......
- 上传文件(lrzsz)
执行命令:yum -y install lrzsz 现在就可以正常使用rz.sz命令上传.下载数据了. 上传文件,执行命令rz,会跳出文件选择窗口,选择好文件,点击确认即可. 下载文件,执行命令sz
- Codeforces Round #511 (Div. 2) C. Enlarge GCD (质因数)
题目 题意: 给你n个数a[1]...a[n],可以得到这n个数的最大公约数, 现在要求你在n个数中 尽量少删除数,使得被删之后的数组a的最大公约数比原来的大. 如果要删的数小于n,就输出要删的数的个 ...
- JDBC-DBUtils工具-[课本293]-ResultSetHander接口的三种实现类的BeanHander/BeanListHander/ScalarHander
---恢复内容开始--- ResultSetHander接口 1.使用BeanHandler()只返回第一行结果集 ,封装到一个对应的JavaBean中 ;eg: User user=(User)bd ...