B - Dining - poj 3281(最大流)
输入分析:输入的第一行是N F D,分别是牛,食物,饮料的个数。下面N行,每行开始的前两个数分别是Fi,Di表示第i头牛喜欢的食物和饮料的个数,紧跟着输入Fi种食物和Di种饮料。
(图1)
(图2)
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std; const int MAXN = ;
const int oo = 1e9+; int G[MAXN][MAXN], layer[MAXN]; bool bfs(int start, int End)
{
bool used[MAXN]={};
queue<int> Q;Q.push(start);
memset(layer, -, sizeof(layer));
layer[start] = , used[start] = true; while(Q.size())
{
int u = Q.front();Q.pop(); if(u == End)return true; for(int i=; i<=End; i++)
{
if(G[u][i] && used[i] == false)
{
used[i] = true;
layer[i] = layer[u]+;
Q.push(i);
}
}
} return false;
}
int dfs(int u, int MaxFlow, int End)
{
if(u == End)return MaxFlow; int uFlow = ; for(int i=; i<=End; i++)
{
if(G[u][i] && layer[i]==layer[u]+)
{
int flow = min(MaxFlow-uFlow, G[u][i]);
flow = dfs(i, flow, End); G[u][i] -= flow;
G[i][u] += flow;
uFlow += flow; if(uFlow == MaxFlow)
break;
}
} return uFlow;
}
int dinic(int start, int End)
{
int MaxFlow = ; while( bfs(start, End) == true )
MaxFlow += dfs(start, oo, End); return MaxFlow;
} int main()
{
int N, F, D; while(scanf("%d%d%d", &N, &F, &D) != EOF)
{///拆点后牛开始位置,源点和汇点
int Ni = N+F+D, start = Ni+N+, End = start+; int i, j, x, Di, Fi; memset(G, , sizeof(G)); for(i=; i<=N; i++)
{///食物放在前面,牛放在中间,饮料放在最后面 scanf("%d%d", &Fi, &Di);
for(j=; j<=Fi; j++)
{///这头牛喜欢的食物,牛的区间在F~N+F
scanf("%d", &x);
G[x][F+i] = true;///用食物连接牛
}
for(j=; j<=Di; j++)
{///这头牛喜欢的饮料,饮料的区间在 F+N~F+N+D
scanf("%d", &x);
G[Ni+i][F+N+x] = true;///用拆的点连接
}
} for(i=; i<=N; i++)///建立牛和拆点的关系
G[F+i][Ni+i] = true;
for(i=; i<=F; i++)///建立源点和食物的关系
G[start][i] = true;
for(i=; i<=D; i++)///建立饮料喝汇点的关系
G[F+N+i][End] = true; printf("%d\n", dinic(start, End));
} return ;
}
/* 2 2 2
2 2 1 2 1 2
2 1 1 2 1
*/
B - Dining - poj 3281(最大流)的更多相关文章
- poj 3281 最大流+建图
很巧妙的思想 转自:http://www.cnblogs.com/kuangbin/archive/2012/08/21/2649850.html 本题能够想到用最大流做,那真的是太绝了.建模的方法很 ...
- poj 3281 最大流建图
题目链接:http://poj.org/problem?id=3281 #include <cstdio> #include <cmath> #include <algo ...
- POJ 3281 最大流
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17251 Accepted: 7643 Descripti ...
- [poj 3281]最大流+建图很巧妙
题目链接:http://poj.org/problem?id=3281 看了kuangbin大佬的思路,还用着kuangbin板子orz http://www.cnblogs.com/kuangb ...
- Dining POJ - 3281
题意: f个食物,d杯饮料,每个牛都有想吃的食物和想喝的饮料,但食物和饮料每个只有一份 求最多能满足多少头牛.... 解析: 一道简单的无源汇拆点最大流 无源汇的一个最大流,先建立超级源s和超级汇 ...
- AC日记——Dining poj 3281
[POJ-3281] 思路: 把牛拆点: s向食物连边,流量1: 饮料向t连边,流量1: 食物向牛1连边,流量1: 牛2向饮料连边,流量1: 最大流: 来,上代码: #include <cstd ...
- kuangbin专题专题十一 网络流 Dining POJ - 3281
题目链接:https://vjudge.net/problem/POJ-3281 题目:有不同种类的食物和饮料,每种只有1个库存,有N头牛,每头牛喜欢某些食物和某些饮料,但是一头牛 只能吃一种食物和喝 ...
- B - Dining POJ - 3281 网络流
Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...
- poj 3281 Dining 网络流-最大流-建图的题
题意很简单:JOHN是一个农场主养了一些奶牛,神奇的是这些个奶牛有不同的品味,只喜欢吃某些食物,喝某些饮料,傻傻的John做了很多食物和饮料,但她不知道可以最多喂饱多少牛,(喂饱当然是有吃有喝才会饱) ...
随机推荐
- Android Xutils 框架
XUtils是git上比较活跃 功能比较完善的一个框架,是基于afinal开发的,比afinal稳定性提高了不少,下面是介绍: 鉴于大家的热情,我又写了一篇Android 最火框架XUtils之注解机 ...
- java编程思想-注解思维导图
- ASP.NET实现从服务器下载文件2
转:http://lanhy2000.blog.163.com/blog/static/436786082011105104110713/ 假设在服务器的根目录下有个名为Download的文件夹 ...
- 安装php时,make步骤报错make: *** [ext/gd/gd.lo] Error 1
安装PHP时,make步骤报错make: *** [ext/gd/gd.lo] Error 1 /usr/local/src/LAMP+memcahed+catci/php-5.4.0/ext/gd/ ...
- 更新Xcode7 后 .dylib变成了.tbd的问题解决
拿添加libsqlite3.dylib为例 1.打开你添加的libsqlite3.tbd 文本文件,然后有一行 install-name: /usr/lib/libsqlite3.dylib ...
- indexedDB bootstrap angularjs 前端 MVC Demo
前端之MVC应用 1.indexedDB(Model): 数据层,前端浏览器 HTML5 API 面向对象数据库,一般现在用的数据库都是关系型数据库. 那么indexeddb有什么特点呢: 首先,从字 ...
- [转]Traits 编程技法+模板偏特化+template参数推导+内嵌型别编程技巧
STL中,traits编程技法得到了很大的应用,了解这个,才能一窥STL奥妙所在. 先将自己所理解的记录如下: Traits技术可以用来获得一个 类型 的相关信息的. 首先假如有以下一个泛型的迭代器类 ...
- 初涉JavaScript模式 (9) : 函数 【常用方式】
回调模式 上一篇,对JavaScript函数进行了大体的介绍,这一篇对一些在工作中经常遇到的情况进行扩展. 在工作中,我们经常遇到很多需求,比如现在有一个需求: 一栋10层的大楼,当我们在坐电梯时,电 ...
- ext中嵌入flash
方法1: xtype: 'fieldset', border: 0, title: "", items[{ xtype: 'flash', url: 'Test.swf' }] u ...
- linux处理闰秒
闰秒的介绍可以参考维基百科 https://zh.wikipedia.org/wiki/闰秒 linux处理闰秒 Linux使用UTC时钟,并通过NTP (Network time protocol) ...