思路:

神建图

源->饮料 边权为1

牛拆点 两个点之间的边权为1

饮料->左牛 边权为1

右牛->食品 边权为1

食品->汇边权为1

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=4444,M=666666;
int n,f,d,jyx,jyy,jy,T,first[N],vis[N],next[M],v[M],w[M],tot,ans;
void Add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void add(int x,int y,int z){Add(x,y,z),Add(y,x,0);}
bool tell(){
memset(vis,-1,sizeof(vis)),vis[0]=0;
queue<int>q;q.push(0);
while(!q.empty()){
int t=q.front();q.pop();
for(int i=first[t];~i;i=next[i])
if(!~vis[v[i]]&&w[i])
vis[v[i]]=vis[t]+1,q.push(v[i]);
}return ~vis[T];
}
int zeng(int x,int y){
if(x==T)return y;
int r=0;
for(int i=first[x];~i&&y>r;i=next[i])
if(vis[v[i]]==vis[x]+1&&w[i]){
int t=zeng(v[i],min(y-r,w[i]));
w[i]-=t,w[i^1]+=t,r+=t;
}
if(!r)vis[x]=-1;
return r;
}
int main(){
memset(first,-1,sizeof(first));
scanf("%d%d%d",&n,&f,&d),T=2*n+f+d+1;//n->cow f->eat d->drink
for(int i=1;i<=f;i++)add(0,2*n+i,1);
for(int i=1;i<=d;i++)add(2*n+f+i,T,1);
for(int i=1;i<=n;i++){
scanf("%d%d",&jyx,&jyy),add(i,i+n,1);
while(jyx--)scanf("%d",&jy),add(2*n+jy,i,1);
while(jyy--)scanf("%d",&jy),add(i+n,2*n+f+jy,1);
}
while(tell())while(jy=zeng(0,0x3fffffff))ans+=jy;
printf("%d\n",ans);
}

最新文章

  1. 转:什么是即时编译(JIT)!?OpenJDK HotSpot VM剖析
  2. css3中动画(transition)和过渡(animation)详析
  3. VS 与JIRA Bamboo的连接
  4. nginx学习笔记
  5. windows Python 3.4.3 安装图文
  6. [deviceone开发]-do_Dialog的基本使用示例
  7. WebGL框架 -- three.js
  8. [bootstrap] 基本css样式和组件
  9. [译]GotW #2: Temporary Objects
  10. HDU--3081--Marriage Match II--最大匹配,匈牙利算法
  11. linux - tar命令简单使用
  12. MySQL数据库学习三 数据库对象和基本操作
  13. Codeforces 785 - A/B/C/D/E - (Undone)
  14. oracle日常查看
  15. JQuery each遍历A标签获取href 和 里面指定的值
  16. Pymysql部分
  17. python学习Day1 计算机原理编程思维
  18. java多线程系列12 ConcurrentHashMap CopyOnWriteArrayList 简介
  19. amazon建立基于centos的ec2
  20. Arrays、ArrayUtils 区别

热门文章

  1. poj2965 The Pilots Brothers&amp;#39; refrigerator(直接计算或枚举Enum+dfs)
  2. 用自定义的函数将gps转换为高德坐标
  3. vue 组件之间的传值
  4. html单行、多行文本溢出隐藏
  5. POJ 1990 线段树
  6. the prblem 3n+1
  7. java 实现多线程 3种方式
  8. css实现步骤条
  9. NOIp2018模拟赛四十四
  10. 【BZOJ4487】【JSOI2015】染色问题