poj 3281 网络流Dinic算法

vue2 - 实现移动端H5网页调用手机相册选取图片或打开摄像头相机拍照上传,如何在h5网站浏览器中打开本机相册或相机选择相片,H5调用本地相册/相机上传图片详细教程(附图片压缩功能及上传服务器示例) vue2手机H5网页,调起安卓苹果ios手机相册和相机,H5实现调用手机摄像头相册实现图片压缩预览删除,vue项目调用摄像头和相册,H5调用手机摄像头,实时拍照上传,VUE2 H5页面如何唤起手机摄像头拍照上传,H5调起手机端的摄像头,html5调用手机摄像头,实现H5调起手机相机和相册,vue H5拍照上传,手机网站浏览器移动端调取相机或相册,实现拍照上传功能,解决苹果ios手机无法打开相册相机问题,无法唤起摄像头怎么办,调取本机系统的相册,vue h5网页调用相机拍照和相册,实现多张图片上传功能,图片压 阅读详情

Dining
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 10184 Accepted: 4682

Description

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).

Input

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  Fiintegers denote the dishes that cow  i will eat, and the  Di integers following that denote the drinks that cow  i will drink.

Output

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

Sample Input

4 3 3
2 2 1 2 3 1
2 2 2 3 1 2
2 2 1 3 1 2
2 1 1 3 3

Sample Output

3

Hint

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.

Source


Dinic算法,每次先用bfs构造层次网络,dfs按层次增广下去,直到无法在增广下去(即汇点t的最短距离改变了)重新bfs构造层次网络。算法直到s-t没有路径为止。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;

#define maxn 405
#define maxm maxn*maxn
int n,f,d;

struct edge
{
    edge(int a, int b, int c){ to = a; cap = b; rev = c;}
    int to, cap, rev;
};

vector<edge> g[maxn];
void add(int u, int v)
{
    g[u].push_back(edge(v, 1, g[v].size()));
    g[v].push_back(edge(u,0, g[u].size()-1));
}


int cur[maxn];
int level[maxn];
void bfs(int s)
{
    memset(level, -1, sizeof(level));
    level[s] = 0;
    queue<int> que;
    que.push(s);
    while(!que.empty()){
        int u = que.front(); que.pop();
        for(int i = 0; i < g[u].size(); i++){
            int v = g[u][i].to, cap = g[u][i].cap;
            if(level[v] == -1 && cap > 0){
                level[v] = level[u]+1;
                que.push(v);
            }
        }
    }
}

int dfs(int u, int t, int f)
{
    if(u == t || f == 0) return f;

    for(int &i = cur[u]; i < g[u].size(); i++){
        int v = g[u][i].to, &cap = g[u][i].cap, rev = g[u][i].rev;
        int d = 0;
        if(level[v] == level[u]+1 && cap > 0){
            d = dfs(v, t,min(cap, f));
            if(d > 0){
                cap -= d;
                g[v][rev].cap += d;
                return d;
            }
        }
    }

    return 0;
}
int dinic(int s, int t)
{
    int max_flow = 0;
    while(1){
        bfs(s);
        if(level[t] < 0) return max_flow;
        memset(cur, 0, sizeof(cur));
        int f;
        while((f = dfs(s, t, 0x3f3f3f3f))) max_flow += f;
    }
}

int main()
{
    while(~scanf("%d %d %d", &n, &f, &d)){
        for(int i = 0; i < maxn; i++) g[i].clear();
        int s = 0, t = 2*n+f+d+1;
        int v,fc, dc;
        for(int i = 1; i <= n; i++){
            add(f+i,f+n+i);
            scanf("%d%d", &fc, &dc);
            for(int j = 0; j < fc; j++){
                scanf("%d", &v);
                add(v, f+i);
            }

            for(int  j= 0; j < dc; j++){
                scanf("%d", &v);
                v += f+2*n;
                add(f+n+i, v);
            }
        }

        for(int i = 1; i <= f; i++)
            add(s, i);
        for(int i = f+2*n+1; i <= f+2*n+d; i++)
            add(i, t);


        printf("%d\n", dinic(s,t));
    }
    return 0;
}




ShardingSphere 5.3 系列Spring 配置升级指南 | Spring Cloud 47 在 `5.3.0` 版本以前,`ShardingSphere-JDBC` 同时支持 `Java API`、`YAML`、`Spring Boot Starter` 和 `Spring Namespace` 等配置方式。 - 当新增或更新 API 时,需要调整多项配置文件,工作量大 - 社区需要维护多重配置文档和示例 - `Spring Bean` 生命周期管理容易受到项目其他依赖的影响,比如 `PostProcessor` 无法正常执行 - `Spring Boot Starter` 和 `Spring N 阅读详情

相关推荐

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5023

Dining

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 me...

Hugokung的博客 518

十一、机器学习进阶知识:径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

本文对径向基神经网络(RBFNN)的理论基础及建模步骤进行介绍,之后使用Python实现基于RBFNN的数据预测,通俗易懂,适合新手学习,附源码及实验数据集。

weixin_42051846的博客 1万+

POJ-3281 Dining【网络流】【最大流】【dinic】

题目 POJ-3281 题意 n只牛,f种食物,d种食物,每只牛都有喜欢的食物和饮料,每头牛都有各自喜欢的食物和饮料,每种食物或饮料只能分配给一头牛。问最多能有多少头牛可以同时得到喜欢的食物和饮料。(每头牛只吃一份食物和饮料) 题解 建一个像下面的图求最大流(边权都为1) 主要讲下为什么要把每只牛拆开成两部分 如果不拆的话会建立如下的图,这样子求出的最大流为2,因为一只牛吃了两份食物饮料,把牛拆开来限制了一只牛只能吃一份食物饮料 代码 /* * @author: arc * @date: 2020-

weixin_43895356的博客 276

AI驱动的数据完整性:ECC到S/4HANA迁移

在SAP ECC到S/4HANA的迁移过程中,数据完整性验证是最复杂且关键的挑战之一。本文介绍了一个全面的AI驱动的端到端数据完整性框架,用于对账事务数据并验证数百万条主数据记录和事务记录的完整性。该框架结合了模式映射、自然语言提示到SQL生成、基于LLM的解决方案、大规模数据对账的数据完整性工具、基于云的测试数据管理以及实时Power BI仪表板,为开发者提供了一个可重复、可扩展的工作流程,确保ERP迁移过程中的数据质量。

简简单单Onlinezuozuo 1172

Delta机器人:运动学正反解分析

Delta机器人:运动学正反解分析 一、Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示。Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中使用最多的一种,具备了并联机构所特有的优点,负载能力强、效率高、末端执行器精度高、运动惯性小,可以高速稳定运动等。因此在机器人领域获得了越来越广泛的应用。以实现高速、精准、高效的运动。           &n

花洛兮灬 3万+

POJ - 3281 (Dining)

题意:有 N 头牛,F种食物和D种饮料,每头牛都有喜欢的食物集合和饮料集合,如果在两个集合中分别任选一个就可以让这头牛满意,现给出N头牛的喜爱的食物和饮料集合,求F种食物和D种饮料每个只有一份的情况下最多能满足牛的数量; 分析:网络流建图,设 0 为源点,1~F 为食物的种类编号,F+1~F+D为饮料的种类编号,F+D+2*i-1~F+D+2*i 为第i头牛的编号(后面解释为什么一头牛需要...

Joker & Liar的博客 294

先进封装基础知识

想象一下,芯片就像是电脑或手机的大脑,但它非常脆弱,需要被保护起来。芯片封装就是给芯片穿上一件“保护衣”,这件“保护衣”不仅可以保护芯片,还能帮助芯片与外部世界进行沟通。

阿拉伯梳子的专栏 1143

poj3281 网络流

Description 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...

qq_40859951的博客 269

42、多媒体与虚拟现实在艺术和影视领域的创新应用

本文探讨了多媒体与虚拟现实在艺术和影视领域的创新应用,涵盖三个典型案例:影视与人类学融合项目通过协作模式模糊作者与观众界限,推动文化文献的发展;交互式数字短片《分手》利用基于对象的广播技术探索个性化影视体验;威尼斯双年展瑞士馆4D项目则通过虚拟现实技术实现文化遗产的数字化展示。这些案例展示了技术在叙事、用户体验及文化保护中的深度应用,并展望了未来技术融合、个性化深化与文化遗产传承的发展趋势。

kappa的博客 114

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1395

POJ - 3281 -- Dining

题目来源:http://poj.org/problem?id=3281 网络流建图,最大流问题。 边的方向为:s-&gt;食物-&gt;牛-&gt;牛-&gt;饮料-&gt;t。 将牛拆成两个顶点,之间连一条容量为1的边,这样避免了一头牛杯分配多组食物和饮料的方案,计算出图中的最大流即可。 代码: #include &lt;iostream&gt; #include &lt;cstri...

No cost too great! 249

OSError We couldn‘t connect to https://huggingface.co to load file, couldn‘t find it chatglm3-6b解决方案

本文主要介绍了OSError: We couldn’t connect to https://huggingface.co to load this file, couldn’t find it in the cached files and it looks like THUDM/chatglm3-6b is not the path to a directory containing a file named config.json.解决方案,希望能对学习python的同学们有所帮助。

weixin_43178406的博客 5万+

POJ 3281 网络流dinic算法

B - Dining Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3281 Appoint description: Description Cows are such finick...

weixin_30532973的博客 102

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

POJ3281 Dining【网络流/点的限制/拆点】

题目链接:POJ3281 Dining 题意:f个食物和d个饮料,分别有自己的编号,n个奶牛吃到自己想要的食物和饮料才会开心,求最多多少奶牛开心; 分析:对奶牛而言有1的上限,对奶牛拆点建边,流量为1(注意点的编号); #include<cstdio> #include<cstdlib> #include<iostream> #include<cm...

MaJorieL 213

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

poj3281

poj3281根本想不到了网络流题,把牛拆点,如图方式建图,然后跑网络流 #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #includ...

weixin_30407613的博客 105

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

网络流Dinic

很久前学过增广路算法,今天学习了它的优化Dinic,原理是在dfs前先将残量网络用bfs进行分层,dfs时只往下一层搜索,详细见代码…… POJ3281 拆点+建图+网络流 把每头牛拆成两个点,建立超级源点S和汇点T,S->菜->牛->牛’->饮料->汇点。注意不要建重边!!!#include <cstdio> #include <queue> #include <algorithm> #in

Moon1125666900的博客 453

[POJ 3281] Dining (网络流入门)

POJ - 3281 有 N头牛,F种食物,D种饮料 每种食物和饮料都只有一份 每头牛都只食用固定的几种食物和饮料 问如何安排使得尽量多的牛同时有食物和饮料 这题算是网络流入门题 + 试板题了 刚开始想得太简单了, 从源点向每个食物连容量为 1的边 从每个饮料向汇点连容量为 1的边 然后对于每头牛,从它喜欢的食物向它连一条容量为 1的边 然后再从它向它喜欢的饮料连一条

MisDeer's blog 404

poj 3281 Dining

题目链接:poj 3281 题意:   有N头牛,F种食物可以制作,D种饮料可以制作   然后每行代表一头牛的喜好,开头两个数fi,di表示这头牛喜欢fi种食物,di种饮料,接下来fi个数表示喜欢的食物编号,di个数表示喜欢的饮料的编号   现在主人使用最优决策制作出F种食物和D种饮料,问怎么喂才能使尽可能多的牛喂饱(喂饱=一份食物一份饮料,且一头牛最多消耗一份食物和一份饮料)  输出最多喂饱的...

Jiandong 204

POJ3281

题目链接:http://poj.org/problem?id=3281 题目大意: 有F中食物D种饮料,每种食物或饮料只能分配给一头牛。最多能有多少头牛可以同时得到喜欢的食物和饮料 思路: 因为要使每头牛斗要有食物和饮料,而且为了分给尽可能多的牛,所以也就是一头牛最好分得一种食物和饮料,在牛和牛之间要建立一个传递,使得容量为1 ,也就变成要求食物为1了,在进入汇点时也要对应成每种饮料一条边

jn_8316的博客 508

poj 3281 最大流建图

题目链接:http://poj.org/problem?id=3281 #include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <cstring> #include <queue> #incl...

weixin_30633405的博客 74

POJ 3281 Dining(最大流+拆点)

题目链接:http://poj.org/problem?id=3281 题目大意:农夫为他的 N (1 ≤ N ≤ 100) 牛准备了 F (1 ≤ F ≤ 100)种食物和 D (1 ≤ D ≤ 100) 种饮料。每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛。最多能有多少头牛可以同时得到喜欢的食物和饮料? 解题思路:令st=0为源点,en=f+2*n+1为汇点,...

weixin_30301183的博客 119

POJ-3281 Dining-最大流-多对一匹配

题目链接:http://poj.org/problem?id=3281 题意:给你n头牛,F种吃的,D种喝的,每头牛对某些吃的喝的情有独钟,每种吃的 和 喝的 只能给一头牛,一头牛只能得到一 种吃的一种喝的,而且一头牛必须同时获得吃的和喝的 才能被满足 问最多有多少头牛可以满足 一个最大流模板题,不过建图容易出错,需要注意的是牛需要拆点就行了。 是一个二分匹配问题,不过是两个条...

zx93的博客 311

POJ 3281 Dining (网络流)

POJ 3281 Dining (网络流) Description 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 co...

weixin_30875157的博客 69

Dining(最大流-拆点-EK算法-Dinic算法)

Dining(最大流-拆点-EK算法-Dinic算法) judge:POJ 3281 Time Limit: 2000MS Memory Limit: 65536K source:USACO 2007 Open Gold Description POJ 3281 Input POJ 3281 Output POJ 3281 Sample Input 4 3 3 2 2 1 2 3 1 2 2 ...

画船听雨眠 456
上一篇: poj 3494 dp+单调栈
下一篇: zoj 3699 单调队列
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值