题意:

农场主有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算法模板]的更多相关文章

  1. POJ 3281 网络流dinic算法

    B - Dining Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  2. POJ 1273 Drainage Ditches(网络流dinic算法模板)

    POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...

  3. 网络流Dinic算法模板 POJ1273

    这就是以后我的板子啦~~~ #include <queue> #include <cstdio> #include <cstring> #include <a ...

  4. POJ 1815 - Friendship - [拆点最大流求最小点割集][暴力枚举求升序割点] - [Dinic算法模板 - 邻接矩阵型]

    妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Tim ...

  5. HDU1532最大流 Edmonds-Karp,Dinic算法 模板

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...

  6. hdu 2435 dinic算法模板+最小割性质

    #include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...

  7. POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]

    题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...

  8. POJ 3469.Dual Core CPU 最大流dinic算法模板

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 24830   Accepted: 10756 ...

  9. poj 1459 Power Network : 最大网络流 dinic算法实现

    点击打开链接 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 20903   Accepted:  ...

随机推荐

  1. 接口自动化- 基于 Python

    准备工作 这部分其实在谷歌或者百度上搜索下就可以完成的,可是我就是想再啰嗦一遍,说不定有比我更懒的同学呢哈哈~ 第一步 Python的安装配置 打开官网: https://www.python.org ...

  2. [Python學習筆記] 使用xlwings 插入註解 (forked 版本)

    到今天為止 xlwings 還沒有插入註解的功能 去原始開發者的 Github Pull Requests 他說之前有人有建議要加入這個功能 但他還沒更新~ 如果需要使用 Python 來插入註解的話 ...

  3. 将Chrome调试器里的JavaScript变量保存成本地JSON文件

    我写了一个系列的文章,主要用来搜集一些供程序员使用的小工具,小技巧,帮助大家提高工作效率. 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diag ...

  4. Android(java)学习笔记185:多媒体之设置全屏的方法

    在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示,一般情况下,可以通过两种方式来设置全屏显示效果.其一,通过在代码中可以设置,其二,通过manifest配置文件来设置全屏. 其 ...

  5. 自己写的画loss曲线代码

    import matplotlib.pyplot as plt iteration = [] loss = [] with open('/home/sensetime/log.txt','r') as ...

  6. java程序在一个电脑上只启动一次,只开一个进程

    方案1: 单进程程序可以用端口绑定.程序启动的时候可以尝试看该端口是否已经被占用,如果占用则程序已经启动. 方案2:你可以在java程序中创建一个隐藏文件,程序退出的时候删除这个文件.这样在程序启动的 ...

  7. JavaEE-07 过滤器和监听器

    学习要点 过滤器 监听器 过滤器Filter 过滤器的概念 过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应. 在请求到达Servlet/JSP之前,过滤器截获请求. 在响 ...

  8. 左右分栏页面右侧无法出现滚动条bug

    问题记录 项目比较老了,左右分栏的页面,导航栏右边是一个iframe组成的页面,通过某个操作后,页面右侧内容区域无法实现滚动 问题查明 遇见过好几次,最后查明,总结一句话,修改了右侧页面body的ov ...

  9. linux 作为web应用服务器内核参数/etc/sysctl.conf

    # Kernel sysctl configuration file for Red Hat Linux## For binary values, 0 is disabled, 1 is enable ...

  10. docker run redis

    #拉取 Redis 镜像 C:\Users\WYJ>docker pull redis Using default tag: latest latest: Pulling from librar ...