bzoj 1711: [Usaco2007 Open]Dining吃饭 网络流
来源:互联网 发布:淘宝支付宝账号怎么改 编辑:程序博客网 时间:2024/05/17 08:41
一个烂大街的题
题解泛滥
我来蹭点访问量+扩充博客文章
由于我懒得算需要开多大数组
就直接开大点然后就不管了...
代码:
#include<iostream>#include<cstdio>#include<vector>#include<queue>#include<cstring> #define ll long long#define inf 10000001 using namespace std; struct node{ int to,num;}edge[11000]; int n,m1,m2;int pn=1;vector<int>v[11000];int edgenum=0;int d[11000]; void link(int x,int y,int z){ node t; t.to=y; t.num=z; edge[edgenum]=t; v[x].push_back(edgenum); edgenum++; t.to=x; t.num=0; edge[edgenum]=t; v[y].push_back(edgenum); edgenum++;} bool bfs(){ memset(d,0,sizeof(d)); d[0]=1; queue<int>q; q.push(0); while(!q.empty()){ int t=q.front(); q.pop(); if(t==n)continue; for(int i=0; i<v[t].size(); i++){ int x=v[t][i]; int to=edge[x].to; int num=edge[x].num; if(num==0 || d[to]!=0)continue; d[to]=d[t]+1; q.push(to); } } if(d[pn]!=0)return true; return false;} ll dfs(int x,int y){ if(x==pn || y==0)return y; ll sum=0; for(int i=0; i<v[x].size(); i++){ int j=v[x][i]; int to=edge[j].to; int num=edge[j].num; if(num){ if(d[to]!=d[x]+1)continue; ll k=dfs(to,min(num,y)); y-=k; sum+=k; edge[j].num-=k; edge[j^1].num+=k; if(y==0)break; } } if(sum==0)d[x]=0; return sum;} long long ans=0; int main(){ scanf("%d%d%d",&n,&m1,&m2); for(int i=1; i<=m1; i++){ link(0,i,1); pn++; } pn+=m1+m2; for(int i=1; i<=n; i++){ link(pn,pn+1,1); int c1=pn,c2=pn+1; pn+=2; int x,y; scanf("%d%d",&x,&y); for(int j=0; j<x; j++){ int fo; scanf("%d",&fo); link(fo,c1,1); } for(int j=0; j<y; j++){ int dr; scanf("%d",&dr); link(c2,dr+m1,1); } } for(int i=m1+1; i<=m1+m2; i++){ link(i,pn,1); } while(bfs())ans+=dfs(0,inf); printf("%lld\n",ans); return 0;}
阅读全文
0 0
- bzoj 1711: [Usaco2007 Open]Dining吃饭 网络流
- bzoj 1711: [Usaco2007 Open]Dining吃饭 (最大流)
- BZOJ 1711: [Usaco2007 Open]Dining吃饭 最大流
- [最大流]BZOJ 1711: [Usaco2007 Open]Dining吃饭 题解
- BZOJ 1711 [Usaco2007 Open]Dining吃饭 最大流
- bzoj 1711: [Usaco2007 Open]Dining吃饭(最大流)
- 1711: [Usaco2007 Open]Dining吃饭
- 网络流 模板【Usaco2007 Open】bzoj1711 Dining吃饭
- bzoj1711: [Usaco2007 Open]Dining吃饭(网络流)
- 【BZOJ1711】[Usaco2007 Open]Dining吃饭【最大流】
- bzoj1711 [Usaco2007 Open]Dining吃饭 最大流
- [bzoj1711][Usaco2007 Open]Dining吃饭 最大流
- BZOJ 1711 Dining 吃饭 网络流
- 【bzoj1711】[Usaco2007 Open]Dining吃饭
- bzoj1711 [Usaco2007 Open]Dining吃饭
- BZOJ1711: [Usaco2007 Open]Dining吃饭
- [BZOJ1711][Usaco2007 Open]Dining吃饭(最大流)
- BZOJ1711 [ Usaco2007 Open ]Dining吃饭 拆点最大流
- 根据要素选择集,创建新图层
- IDEA创建servlet 找不到javax.servlet包的解决方法
- AngularJS国际化配置
- 【hdu 1176】免费馅饼
- bzoj 3224: Tyvj 1728 普通平衡树
- bzoj 1711: [Usaco2007 Open]Dining吃饭 网络流
- HDU 6092 Rikka with Subset
- HDU6092 Rikka with Subset
- MD5理解
- 01背包问题收录.
- JZOJ1217. 软件开发(2017年8月B组)
- Android ConstraintLayout详解-使用可视化的方式来编写界面
- 【转载】Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
- [LeetCode] 80. Remove Duplicates from Sorted Array II