hdu 4292 Food 最大流
来源:互联网 发布:vb 资源管理器 编辑:程序博客网 时间:2024/04/29 09:05
#include<stdio.h>#include<string.h>#include<queue>#include<vector>using namespace std;const int N=1024;const int inf=1<<24;struct Edge{ int from,to,cap,flow;};vector<Edge>edges;vector<int>G[N];int n,m,s,t;int vis[N];int d[N];int cur[N];void AddEdge(int from,int to,int cap){ Edge tp; tp.from=from,tp.to=to,tp.cap=cap,tp.flow=0; edges.push_back(tp); tp.from=to,tp.to=from,tp.cap=0,tp.flow=0; edges.push_back(tp); int g_size=edges.size(); G[from].push_back(g_size-2); G[to].push_back(g_size-1);}bool BFS(){ memset(vis,0,sizeof(vis)); queue<int>Q; Q.push(s); d[s]=0; vis[s]=1; while(!Q.empty()) { int x=Q.front(); Q.pop(); for(int i=0; i<G[x].size(); i++) { Edge &e=edges[G[x][i]]; if(!vis[e.to]&&e.cap>e.flow) { vis[e.to]=1; d[e.to]=d[x]+1; Q.push(e.to); } } } return vis[t];}int DFS(int x,int a){ if(x==t||a==0) return a; int flow=0,f; for(int &i=cur[x]; i<G[x].size(); i++) { Edge &e=edges[G[x][i]]; if(d[x]+1==d[e.to]&&(f=DFS(e.to,min(a,e.cap-e.flow)))>0) { e.flow+=f; edges[G[x][i]^1].flow-=f; flow+=f; a-=f; if(a==0) break; } } if(!flow) d[x] = -1; return flow;}int Maxflow(int st,int ed){ int flow=0; while(BFS()) { memset(cur,0,sizeof(cur)); flow+=DFS(st,inf); } return flow;}int main(){ int f,d,c,i,j; char st[1024]; while(~scanf("%d%d%d",&m,&f,&d)) { edges.clear(); for(i=0; i<N; i++) G[i].clear(); s=0; t=2*m+f+d+1; for(i=1;i<=m;i++) AddEdge(i,i+m,1); for(i=1;i<=f;i++) { scanf("%d",&c); AddEdge(s,i+2*m,c); } for(i=1;i<=d;i++) { scanf("%d",&c); AddEdge(i+2*m+f,t,c); } for(i=1;i<=m;i++) { scanf("%s",st); for(j=0;j<f;j++) { if(st[j]=='Y') AddEdge(j+1+2*m,i,1); } } for(int i=1;i<=m;i++) { scanf("%s",st); for(j=0;j<d;j++) { if(st[j]=='Y') AddEdge(i+m,j+1+2*m+f,1); } } printf("%d\n",Maxflow(s,t)); } return 0;}
0 0
- HDU 4292 Food (最大流)
- hdu 4292 Food 最大流
- 最大流:HDU-4292(Food)
- 【HDU】4292 Food 最大流
- 【最大流】HDU 4292 Food
- hdu 4292 Food (最大流)
- HDU 4292 Food(最大流)
- hdu 4292 Food 最大流
- HDU 4292 Food(拆点,最大流)
- HDU 4292 Food(建图+最大流)
- hdu 4292 Food 最大流+拆点
- HDU 4292 Food 最大流 + 拆点
- hdu 4292 Food (最大流)
- HDU 4292--Food【最大流 && 拆点】
- HDU-4292-Food(最大流)
- 拆点最大流-HDU-4292-Food
- HDU 4292Food(最大流+拆点)
- HDU 4292Food(网络流之最大流)
- 黑马程序员_反射机制的一些总结
- 第七周项目3负数把正数赶出队
- 文件特殊权限:SUID/SGID/Sticky Bit
- 提高支付宝花呗消费额度
- Ajax 获取 responseXML 形式的响应数据(三)
- hdu 4292 Food 最大流
- CC2541解析广播数据及扫描响应
- Sense Time 深度学习基础讲座
- Mangos源码分析(13):再谈登录服的实现
- java三大框架学习之路---Struts2_HelloWorld
- 学习编程语言时记Keyword的技巧。
- 零基础ios开发(八 正向和反向传值)
- 《STL源码剖析》深入分析序列式容器——vector
- 《剑指offer》——跳台阶