【网络流最大流】poj3281Dining
来源:互联网 发布:王兆山 真相 知乎 编辑:程序博客网 时间:2024/04/30 17:51
/*EK算法版本的,比较慢哦。。。。。详见下面dinic版本-----------------------------------------题目是网络流最大流的问题----------------------------------------建图:关键:拆点把每个牛拆成两个点,牛作为一个点有流量限制,即每一头牛只能的一份饭。把牛拆开后,将边的权值赋值为1,----------------------------------------建好图后就可以EK算法最大流了----------------------------------------建图代码:for(int i=1; i<=f; i++)源点和food相连 g[s][i] = 1;for(int i=1; i<=d; i++)drink和汇点相连 g[i + 2*n + f][t] = 1;for(int i=1; i<=n; i++){ cin>>a>>b; for(int j=1; j<=a; j++) { cin>>food; g[food][f + i] = 1;food和牛相连 } g[f + i][f + i + n] = 1;牛拆点后也要相连 for(int j=1; j<=b; j++) { cin>>drink; g[f + i + n][2*n + f + drink] = 1;牛和drink相连 }}---------------------------------*/#include <iostream>#include <cstdio>#include <queue>#include <cstring>#define INF 0x3f3f3f3fusing namespace std;const int N = 500;int n,f,d;int g[N][N];int flow[N][N],a[N],p[N];int s,t;int EK(int s, int t){ queue<int> q; int f = 0; for(;;) { memset(a,0,sizeof(a)); a[s] = INF; q.push(s); while(!q.empty()) { int u = q.front(); q.pop(); for(int v=s; v<=t; v++) { if(!a[v] && g[u][v] > flow[u][v]) { p[v] = u; q.push(v); a[v] = min(a[u],g[u][v] - flow[u][v]); } } } if(a[t] == 0) break; for(int u=t; u != s; u=p[u]) { flow[p[u]][u] += a[t]; flow[u][p[u]] -= a[t]; } f += a[t]; } return f;}void init(){ int a,b,food,drink; s = 0; t = 2*n + f + d + 1; memset(g,0,sizeof(g)); for(int i=1; i<=f; i++) g[s][i] = 1; for(int i=1; i<=d; i++) g[i + 2*n + f][t] = 1; for(int i=1; i<=n; i++) { cin>>a>>b; for(int j=1; j<=a; j++) { cin>>food; g[food][f + i] = 1; } g[f + i][f + i + n] = 1; for(int j=1; j<=b; j++) { cin>>drink; g[f + i + n][2*n + f + drink] = 1; } }}int main(){ //freopen("input.txt","r",stdin); while(scanf("%d%d%d",&n,&f,&d) != EOF) { init(); printf("%d\n",EK(s, t)); } return 0;}
--------------------------------------------------------------------
战斗,毫不退缩;奋斗,永不停歇~~~~~~~~~~~~~~
0 0
- poj3281Dining网络流-最大流
- 【网络流最大流】poj3281Dining
- POJ3281Dining(最大流入门题)
- poj3281Dining
- 网络流--最大流
- 最大流(网络流)
- 网络流 最大流
- 网络流最大流
- 网络流 最大流
- 网络流-最大流
- 网络流--最大流
- 网络流-最大流
- 网络流 最大流
- 网络流-最大流
- 网络流,最大流
- 最大网络流
- 最大网络流
- 网络最大流问题
- Objective-C 类
- 对View DrawingCache的理解
- Android学习路线(五)开启另一个Activity
- MySql基础总结(1)
- 线段树离线处理(区间内不同的数的个数)hdu3333
- 【网络流最大流】poj3281Dining
- Windows Socket 网络编程(二) —— 套接字编程原理
- NOJ 2024 入栈序列和出栈序列 数据结构理解
- 黑马程序员-集合框架(1)
- TestDemo
- 2014-08-04 日志
- HDU 4908 BestCoder Sequence (hash)
- Android常用Adapter用例
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”