POJ1274 The Perfect Stall 简单最大二分匹配
来源:互联网 发布:淘宝上老款诺基亚来源 编辑:程序博客网 时间:2024/06/05 14:41
Problem Address:http://poj.org/problem?id=1274
【前言】
二分匹配可以算是网络流的经典应用了。
于是完成poj1273之后,找到了poj1274并A之。
二分匹配建立在简单网络流的基础上,很简单的一个思想。
所以与上一道题相比并没有太多的变化,代码也是差不多。
【思路】
把cow和stall分别看成左右的结点,把两种结点一起编号并设计其邻接矩阵。
其中只能从cow连接到stall。
增加两个结点,一个作为源点,一个作为汇点。
从源点出发连接每个cow。
从每个stall结点出发连接汇点。
形成一个具有(n+m+2)个元素的矩阵。
对这个矩阵进行网络流计算即可得出结果。
【代码】
参考:http://poj.org/problem?id=1273
#include <iostream>using namespace std;const int maxn = 400;const int MAX = 99999999;int map[maxn+5][maxn+5];int pre[maxn+5];int q[maxn*maxn];void init_map(int size){int i,j;for (i=0; i<size; i++){for (j=0; j<size; j++){map[i][j] = 0;}}}bool bfs(int s, int t, int size){int head, tail, u, v;memset(pre, -1, sizeof(pre));head = 1;tail = 0;q[tail] = s;while(tail<head){u = q[tail];for (v=1; v<=size; v++){if (pre[v]==-1 && map[u][v]>0){pre[v] = u;q[head] = v;head++;if (v==t)return true;}}tail++;}return false;}int solve(int s, int t, int size){int u, v, inc, maxflow = 0;while(bfs(s, t, size)){inc = MAX;for (v=t; v!=s; v=u){u = pre[v];if (map[u][v]<inc)inc = map[u][v];}for (v=t; v!=s; v=u){u = pre[v];map[u][v] -= inc;map[v][u] += inc;}maxflow += inc;}return maxflow;}int main(){int n,m,s,e;int i,j;while(scanf("%d %d", &n, &m)!=EOF){init_map(n+m+2);for (i=1; i<=n; i++){scanf("%d", &s);for (j=0; j<s; j++){scanf("%d", &e);map[i][n+e] = 1;}}for (i=1; i<=n; i++)map[0][i] = 1;for (i=n+1; i<=n+m; i++)map[i][n+m+1] = 1;printf("%d\n", solve(0, n+m+1, n+m+2));}return 0;}
- POJ1274 The Perfect Stall 简单最大二分匹配
- POJ1274 The Perfect Stall [二分图最大匹配 匈牙利算法]
- POJ1274 The Perfect Stall【二分图最大匹配】
- poj1274 The Perfect Stall(二分图匹配 / 最大流)
- poj1274 The Perfect Stall 二分匹配简单题
- poj1274 The Perfect Stall(二分图匹配)
- poj1274 The Perfect Stall【二分图匹配】
- POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)
- poj1274 The Perfect Stall 二分图最大匹配模板题 匈牙利算法BFS
- The Perfect Stall(最大二分匹配)
- (二分图最大匹配)The Perfect Stall
- POJ1274 The Perfect Stall(二分图)
- POJ1274--The Perfect Stall(最大流)
- POJ1274 The Perfect Stall
- POJ1274 The Perfect Stall
- poj1274 - The Perfect Stall
- poj1274 The Perfect Stall
- POJ1274 The Perfect Stall
- linux下的dns设置详解
- Spring的核心思想终极理解
- JavaScrit 判断两个时间相差的各个阶段
- Android C2DM学习——客户端代码开发
- Int/Decimal.ToString 方法 (String, IFormatProvider)
- POJ1274 The Perfect Stall 简单最大二分匹配
- eclipse3.7+resin4.0集成配置小结
- 第一个ActionScript3.0语言的文字小游戏【古惑仔之人在江湖】
- 关于contiki下rest-example的问题,和led这个resource如何跑的问题(绝对原创)
- DSP系统是硬实时系统
- BIND9 递归查询超时机制
- asp.net页面传值的几种方式
- 最近学习tcp的一些感触
- 怀念Delphi--希望它能雄起!