二部图最大匹配
来源:互联网 发布:网络教学有什么特点 编辑:程序博客网 时间:2024/05/17 04:41
题意:
一个矩阵,元素除了1就是0,问将所有的在同行或者同列的1连接起来,最少需要多少条线。
输入:
2
4 4
0010
0101
0010
0000
5 4
1001
0010
1100
1110
0101
输出:
Case #1: 2
Case #2: 4
分析:
看到题目的第一眼以为是将统计每一行每一列中1的个数,之后从中依次去掉1个数最多的行,统计去几次之后再与按列去和按行去
取最小值,交了一次wa,是因为没有考虑如果碰到几行或者几列或者行列相同的个数应该怎么去,赛后看了题解知道是一个二部图
最大匹配的匈牙利算法(用于求解匹配的算法)。
代码:
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>using namespace std;char c[110][110];int vis1[110],vis2[110],n,m,k;bool Find(int x)//固定行,递归{ for(int j=0; j<m; j++) { if(c[x][j]=='1'&&!vis1[j]) { vis1[j]=1; if(vis2[j]==-1||Find(vis2[j])) { vis2[j]=x; return true; } } } return false; //该行没有1}int match(){ int cnt=0; for(int i=0; i<n; i++) { memset(vis1,0,sizeof(vis1)); if(Find(i)) cnt++; } return cnt;}int main(){ int t; scanf("%d",&t); while(t--) { memset(vis2,-1,sizeof(vis2)); scanf("%d%d",&n,&m); for(int i=0; i<n; i++) { scanf("%s",c[i]); } printf("Case #%d: %d\n", ++k,match()); } return 0;}
0 0
- 二部图,最大匹配
- 二部图最大匹配
- 二部图最大匹配
- COURSES(裸二部图最大匹配)
- 二部图最大匹配--匈牙利算法
- 编程练习B(最大二部图匹配)
- ZJU2039 The Dog Task - 二部图最大匹配
- 二部图最大匹配(2006-11-05 16:34)
- UVA 10080 Gopher II【简单二部图最大匹配】
- 匈牙利算法 DFS 二部图的最大匹配
- poj 1698 二部图多重最大匹配(拍电影)
- hdu 5093 Battle ships (二部图+最大匹配)
- HDU 5093 Battle ships(二部图最大匹配)
- 二部图的最大匹配问题代码详解
- (POJ1325)Machine Schedule(二部图最大匹配)
- 素数伴侣问题—>二部图最大匹配问题
- hdu2444 The Accomodation of Students(判断二部图+最大匹配)
- 二部图匹配问题
- mysql主从复制配置
- BZOJ1111——[POI2007]四进制的天平Wag
- mac启动apache 报错“httpd-mpm.conf:”
- IPU总结笔记
- UVALive 6807(最大生成树)
- 二部图最大匹配
- Spring框架中使用注解
- 深度学习笔记9:权值更新的实现
- HPU图论专项(graph)【拓扑--二分图--最小生成树---树的直径---并查集--奇偶树---最小环---强联通】
- C语言内存分配
- Java中ArrayList和LinkedList区别
- SVN数据迁移
- 使用Java开发高性能网站需要关注的那些事儿
- POJ 1056 IMMEDIATE DECODABILITY(字典树 水题)