bzoj1711 [Usaco2007 Open]Dining吃饭(最大流/三分图匹配)
来源:互联网 发布:db2和sqlserver 编辑:程序博客网 时间:2024/06/05 11:26
源点向食物建边,食物向牛建边,牛向饮料建边,饮料向汇点建边,把牛拆成两个,保证一头牛只有1会通过。然后dinic
#include <bits/stdc++.h>using namespace std;#define ll long long#define N 510#define inf 0x3f3f3f3finline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n,f,d,h[N],num=1,lev[N],T=500;struct edge{ int to,next,val;}data[50000];inline void add(int x,int y,int val){ data[++num].to=y;data[num].next=h[x];h[x]=num;data[num].val=val; data[++num].to=x;data[num].next=h[y];h[y]=num;data[num].val=0;}inline bool bfs(){ queue<int>q;memset(lev,0,sizeof(lev)); q.push(0);lev[0]=1; while(!q.empty()){ int x=q.front();q.pop(); for(int i=h[x];i;i=data[i].next){ int y=data[i].to;if(lev[y]||!data[i].val) continue; lev[y]=lev[x]+1;q.push(y); } }return lev[T];}int dinic(int x,int low){ if(x==T) return low;int tmp=low; for(int i=h[x];i;i=data[i].next){ int y=data[i].to;if(lev[y]!=lev[x]+1||!data[i].val) continue; int res=dinic(y,min(tmp,data[i].val)); if(!res) lev[y]=0;tmp-=res;data[i].val-=res;data[i^1].val+=res; if(!tmp) return low; }return low-tmp;}int main(){// freopen("a.in","r",stdin); n=read();f=read();d=read(); for(int i=1;i<=f;++i) add(0,i+200,1); for(int i=1;i<=d;++i) add(i+300,T,1); for(int i=1;i<=n;++i){ int f1=read(),d1=read();add(i,i+100,1); while(f1--){ int x=read();add(x+200,i,1); }while(d1--){ int x=read();add(i+100,x+300,1); } }int ans=0;while(bfs()) ans+=dinic(0,inf); printf("%d\n",ans); return 0;}
阅读全文
0 0
- bzoj1711 [Usaco2007 Open]Dining吃饭(最大流/三分图匹配)
- 【BZOJ1711】[Usaco2007 Open]Dining吃饭【最大流】
- bzoj1711 [Usaco2007 Open]Dining吃饭 最大流
- [bzoj1711][Usaco2007 Open]Dining吃饭 最大流
- [BZOJ1711][Usaco2007 Open]Dining吃饭(最大流)
- BZOJ1711 [ Usaco2007 Open ]Dining吃饭 拆点最大流
- bzoj1711: [Usaco2007 Open]Dining吃饭(网络流)
- 【bzoj1711】[Usaco2007 Open]Dining吃饭
- bzoj1711 [Usaco2007 Open]Dining吃饭
- BZOJ1711: [Usaco2007 Open]Dining吃饭
- 【bzoj1711】[Usaco2007 Open]Dingin吃饭 最大流
- 网络流 模板【Usaco2007 Open】bzoj1711 Dining吃饭
- BZOJ1711 [Usaco2007 Open]Dining吃饭 题解&代码
- [BZOJ1711]Dining 吃饭 最大流
- bzoj 1711: [Usaco2007 Open]Dining吃饭 (最大流)
- bzoj 1711: [Usaco2007 Open]Dining吃饭(最大流)
- BZOJ 1711: [Usaco2007 Open]Dining吃饭 最大流
- [最大流]BZOJ 1711: [Usaco2007 Open]Dining吃饭 题解
- (培训)CMMI项目评估和技术团队效率提升实战培训笔记
- Android四大组件之Activity
- day11多态 接口 和instanceof
- accelerated c++ 0-2
- 判断字符串是否为回文字符串
- bzoj1711 [Usaco2007 Open]Dining吃饭(最大流/三分图匹配)
- 设置session时间
- 用 FileSaver 导出excel表
- Oracle中Left join的on和where的效率差别
- MVC5 新建项目里不包含jquery.unobtrusive-ajax.js(MVC5异步表单的问题)解决方法
- 借了不还,还打人的call()与apply()方法!
- 隐秘的广告销售技巧
- java8实战六:并行流
- 创建maven项目后,修改jre版本alt+f5后,返回默认1.5版本解决方法