[面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 二分图 ]
来源:互联网 发布:java连接rac io异常 编辑:程序博客网 时间:2024/05/21 11:25
二分图匹配 建图的经典之作
#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <vector>#include <stack>#include <deque>#include <queue>#include <bitset>#include <list>#include <map>#include <set>#include <iterator>#include <algorithm>#include <functional>#include <utility>#include <sstream>#include <climits>#include <cassert>#define BUG puts("here!!!");using namespace std;const int N = 5;const int M = 30;char str[N][N];int p[N][N];int rp[N][N];int mmap[M][M];int pre[M];bool vis[M];int n;int x_id, y_id;bool dfs(int u) {for(int i = 1; i <= y_id; i++) {if(mmap[u][i] && !vis[i]) {vis[i] = true;if(pre[i] == 0 || dfs(pre[i])) {pre[i] = u;return true;}}}return false;}int maxMatch() {memset(pre, 0, sizeof(pre));int num = 0;for(int i = 1; i <= x_id; i++) {memset(vis, 0, sizeof(vis));if(dfs(i)) num++;}return num;}int main() {while(cin >> n, n) {for(int i = 0; i < n; i++) {scanf("%s", str[i]);}memset(p, 0, sizeof(p));memset(rp, 0, sizeof(rp));x_id = 0, y_id = 0;for(int i = 0; i < n; i++) {int k = 0;while(k < n) {if(str[i][k] == '.') {++x_id;while(k < n && str[i][k] != 'X') {p[i][k] = x_id;k++;}}else k++;}}for(int i = 0; i < n; i++) {int k = 0;while(k < n) {if(str[k][i] == '.') {++y_id;while(k < n && str[k][i] != 'X') {rp[k][i] = y_id;k++;}}else k++;}}memset(mmap, 0, sizeof(mmap));for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {if(str[i][j] == '.') {mmap[p[i][j]][rp[i][j]] = 1;}}}printf("%d\n", maxMatch());}return 0;}
- [面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 二分图 ]
- [面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 讲解之用 ]
- hdu 1045 Fire Net (二分图)
- HDU 1045 Fire Net 二分图
- HDU 1045 Fire Net (二分图的最大匹配)
- HDU 1045 Fire Net 详细题解(二分图经典模型)
- 【二分图匹配】Fire Net HDU
- hdu 1045 Fire Net (dfs || 二分图)
- hdu 1045 Fire Net(二分图匹配)
- HDU 1045 Fire Net 二分图Bipartite题解
- HDU 1045 Fire Net 最大二分图匹配
- HDU 1045 Fire Net (dfs 或 二分图)
- HDU 1045 Fire Net(二分图最大匹配)
- HDU 1045 Fire Net(二分图最大匹配)
- HDU 1045 Fire Net(搜索/贪心/二分图最大匹配)
- hdu-1045-Fire Net-二分图匹配-匈牙利算法-java
- 【HDOJ 1045】Fire Net--二分图
- hdoj--1045--Fire Net(二分图)
- 配置Opencv:Win7+VS2010+OpenCV 2.4.3
- The difference between su and su -
- 钓鱼与晒网问题
- 【APUE】笔记之——进程控制
- 大话铁道部12306订票系统云架构
- [面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 二分图 ]
- 博友收藏
- 重装Ubuntu12.04LTS后耳机没有声音
- Eclipse Tomcat
- zhuan----Win32下VS2008编译chrome浏览器--------生成project
- 字节流
- 解剖Nginx·模块开发篇(1)跑起你的 Hello World 模块!
- HEVC学习(二十七) —— 变换编码之二
- 2013年要做的事情!