POJ 3281 [网络流dinic算法模板]
题意:
农场主有f种食物,d种饮料,n头牛。
接下来的n行每行第一个数代表第i头牛喜欢吃的食物数量,和第i头牛喜欢喝的饮料数目。
接下来分别是喜欢的食物和饮料的编号。
求解:农场主最多能保证几头牛同时能吃到喜欢的食物和喜欢的饮料。
思路:
从源点到每种食物加流量为1的边,保证每种食物只能被吃一次。
将每头牛分为两个点,连一条流量为1的边,保证每头牛最多只能吃一份食物喝一份饮料。
将每种饮料和汇点都进行连接,同样流量为1。
将牛喜欢的食物和牛进行连边流量为1,将另一组代表牛的点和喜欢的饮料进行连边,同样流量为1。
建好图之后就变成了最大流问题了。
这里留一个用dinic解决最大流问题的模板。
/*************************************************************************
> File Name: T.cpp
> Author: ttpond
> Created Time: 2015-8-22 12:4:42
************************************************************************/
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<set>
using namespace std;
int z;
int n,f,d;
int pho[][];
int dis[];
int nb;
bool BFS()
{
nb++;
int i,j;
memset(dis,-,sizeof(dis));
int tmp;
queue<int>q;
dis[]=;
q.push();
while(!q.empty())
{
tmp=q.front();
q.pop();
for(int i=; i<=z; i++)
{
if(dis[i]<&&pho[tmp][i])
{
dis[i]=dis[tmp]+;
q.push(i);
}
}
}
if(dis[z]>)
return ;
else
return ;
}
int findans(int x,int low)
{
int i,a=;
if(x==z)
return low;
for(i=; i<=z; i++)
{
if(pho[x][i]>&&dis[i]==dis[x]+&&(a=findans(i,min(low,pho[x][i]))))
{
pho[x][i]-=a;
pho[i][x]+=a;
return a;
}
}
return ;
}
int main()
{
int a,b,tmp;
scanf("%d%d%d",&n,&f,&d);
z=+f+n*+d;
memset(pho,,sizeof(pho));
for(int i=; i<=+f; i++)
{
pho[][i]=;
}
for(int i=f+; i<=f+n+; i++)
{
pho[i][i+n]=;
}
for(int i=+f+n*; i<=+f+n*+d; i++)
{
pho[i][+f+n*+d]=;
}
for(int i=; i<=n; i++)
{
scanf("%d%d",&a,&b);
for(int j=; j<=a; j++)
{
scanf("%d",&tmp);
pho[tmp+][i+f+]=;
}
for(int j=; j<=b; j++)
{
scanf("%d",&tmp);
pho[i+f++n][tmp+f++n*]=;
}
}
int ans=,tans;
while(BFS())
{
while(tans=findans(,0x7fffffff))
{
ans+=tans;
}
}
printf("%d\n",ans);
}
POJ 3281 [网络流dinic算法模板]的更多相关文章
- POJ 3281 网络流dinic算法
B - Dining Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- POJ 1273 Drainage Ditches(网络流dinic算法模板)
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...
- 网络流Dinic算法模板 POJ1273
这就是以后我的板子啦~~~ #include <queue> #include <cstdio> #include <cstring> #include <a ...
- POJ 1815 - Friendship - [拆点最大流求最小点割集][暴力枚举求升序割点] - [Dinic算法模板 - 邻接矩阵型]
妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Tim ...
- HDU1532最大流 Edmonds-Karp,Dinic算法 模板
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdu 2435 dinic算法模板+最小割性质
#include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
- POJ 3469.Dual Core CPU 最大流dinic算法模板
Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 24830 Accepted: 10756 ...
- poj 1459 Power Network : 最大网络流 dinic算法实现
点击打开链接 Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 20903 Accepted: ...
随机推荐
- 【转载】Hierarchal Temporal Memory (HTM)
最近在看机器学习,看能否根据已有的历史来预测Hardware的故障发生概率.下文是一篇很有意思的文章,转自 http://numenta.org/htm.html. NuPIC是一个开源项目,用来实现 ...
- Javaweb学习笔记7—JDBC技术
今天来讲javaweb的第7阶段学习. JDBC技术,关于JDBC本篇博客只介绍了它的一部分,后面博客会更加深入探讨. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的 ...
- innerHTML与IE浏览器内存泄露问题
使用 sIEve 扫描和筛选 如果大量使用 JavaScript 和 Ajax 技术开发 Web 2.0 应用程序,您很有可能会遇到浏览器的内存泄漏问题.如果您有一个单页应用程序或者一个页面要处理很多 ...
- 入门Promise的用法
new Promise(function(resolve,reject){ resolve(); //数据处理完成 reject(); //数据处理出错 }).then(function A(){ / ...
- elasticsearch时间格式DateFormat的含义
时间格式 枚举(或者英文)format pattern 含义 custom - 自定义属性 none - 不转化 basic_date yyyyMMdd 基本时间 basic_date_time ...
- zipkin 服务追踪
服务追踪,就是对请求接口的追踪并保存. 在测试的过程中我们会发现,有时候,程序刚刚启动后,刷新几次,并不能看到任何数据,原因就是我们的spring-cloud-sleuth收集信息是有一定的比率的,默 ...
- js将时间戳装换成日期格式
13位时间戳改为yyyy-MM-dd HH-mm-ss 格式 目标时间戳:1516324500000 formatDateTime (unix) { // 转换时间戳 var date = new D ...
- python基础一day3 字符串
对字符串进行的任何操作都是形成新的字符串. 切片顾头不顾尾 倒着取: 因为顾头不顾尾,所以4要取到 当步长省略时,可以同时省略最后一个冒号 写0时,取不到,什么都不写,可以取到 倒着取出全部的值,两种 ...
- Linux 编译升级 FFmpeg 步骤
如果服务器已经安装了一个 Ffmpeg 的话,比如已安装在 /usr/local/ffmpeg 目录.Linux下版本升级步骤如下: 1.下载 ffmpeg-*.tar.gz到 Ffmpeg 官网 h ...
- 安装docker和docker-compose
环境:centos7,参考官方文档:https://docs.docker.com/insta... 第一步:删除旧版本和相关依赖,运行命令: yum remove docker \ docker ...