Dining(最大流)】的更多相关文章

题目链接:https://vjudge.net/problem/POJ-3281 Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20017   Accepted: 8901 Description Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume…
POJ 3281 Dining id=3281" target="_blank" style="">题目链接 题意:n个牛.每一个牛有一些喜欢的食物和饮料.每种食物饮料仅仅有一个.问最大能匹配上多少仅仅牛每一个牛都能吃上喜欢的食物和喜欢的饮料 思路:最大流.建模源点到每一个食物连一条边,容量为1,每一个饮料向汇点连一条边容量为1,然后因为每一个牛有容量1.所以把牛进行拆点.然后食物连向牛的入点,牛的出点连向食物,跑一下最大流就可以 代码: #incl…
题意:有f种菜,d种饮品,每个牛有喜欢的一些菜和饮品,每种菜只能被选一次,饮品一样,问最多能使多少头牛享受自己喜欢的饮品和菜 分析:建边的时候,把牛拆成两个点,出和入 1,源点向每种菜流量为1 2,每种菜连所有喜欢这道菜的牛的入点,流量1 3,每头牛的入点和出点,流量为1 4,每头牛的出点连所有它喜欢的饮品,流量为1 5,每种饮品连汇点,流量为1 然后最大流是答案,这个题一定要拆点,因为一头牛只吃一次 注:模板采用的是LRJ大白书上的模板(其实这题和HDU 4292是一样的) #include…
不使用二分图匹配,使用最大流即可,设源点S与汇点T,S->食物->牛->牛->饮料->T,每条边流量为1,因为流过牛的最大流量是1,所以将牛拆成两个点. 前向星,Dinic,复杂度:O(V2E) 直接套用模板 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<set…
\(\color{#0066ff}{ 题目描述 }\) 有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料.(1 <= f <= 100, 1 <= d <= 100, 1 <= n <= 100) $\color{#0066ff}{ 输入格式 } $ Line 1: Three space-separated integer…
题目大意:有$n$头牛,$f$种食物和$d$种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料. 解题关键:设超级源点指向所有食物,饮料指向所有超级汇点,牛拆点为牛1和牛2,然后按照匹配进行建图,所有边权为1,保证每头牛不会贪吃,可知每条可行流为一个解,跑最大流即可. 一定注意坐标的范围分别代表什么,拆点的时候最容易出错的就是点坐标的表示. 牛拆点边权为1的原因是保证每头牛只能选…
我是按照图论500题的文档来刷题的,看了这题怎么也不觉得这是最大流的题目.这应该是题目做得太少的缘故. 什么是最大流问题?最大流有什么特点? 最大流的特点我觉得有一下几点: 1.只有一个起点.一个终点.如果不是,我们可以构造超级源点,超级汇点. 2.边的容量有上限(有上下限的是另外一种特殊的最大流). 3.最后求的是一个最大值. 这题可以找到一些影子,一头奶牛只能吃一种食物,喝一种饮料.如果只有一种限制我们能很快反应过来(二分最大匹配),但是两种限制就增加了难度.不过还是可以理解为对边的权值的限…
牛是很挑食的.每头牛都偏爱特定的食物和饮料,其他的就不吃了. 农夫约翰为他的牛做了美味的饭菜,但他忘了根据它们的喜好检查菜单.虽然他不可能喂饱所有的人,但他想让尽可能多的奶牛吃上一顿有食物和水的大餐. 农民John煮了F(1≤F≤100)种食物,准备了D(1≤D≤100)种饮料.他的每头牛(1≤N≤100)已经决定了她是吃某种食物还是喝某种饮料.农民约翰必须为每头奶牛分配一种食物和一种饮料,以使得到这两种食物的奶牛数量最大化. 每一道菜或饮料只能由一头奶牛食用.,一旦食物2型被分配给一头奶牛,其…
饮料->牛->食物. 牛拆成两点. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> #include<sstream> #include<cmath…
题目链接: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为汇点,st向每种食物建流量为1的边,每种食物向喜欢它的牛(拆点1)建流量为1的边,眉头牛的拆点之间建流量为1的边,每头牛…