HDU-4185-Oil Skimming [二分匹配]
来源:互联网 发布:空军一号 国际歌 知乎 编辑:程序博客网 时间:2024/05/21 17:59
题目传送门
题意:一个地图由’.’和’#’组成,问有多少个不重叠的’##’。
思路:先将所有的’#’hash,然后建二分图,用匈牙利算法算最大匹配日数,因为边建了两次,所以结果除以二。
#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <map>#include <set>using namespace std;struct node{ int to, next;}edge[720100];char mp[610][610];int a[610][610];int n, cnt, head[360100];int num;int match[360100];bool used[360100];void add(int u, int v){ edge[cnt].to = v; edge[cnt].next = head[u]; head[u] = cnt++;}bool Dfs(int x){ for (int i = head[x]; i; i = edge[i].next) { int v = edge[i].to; if (!used[v]) { used[v] = true; if (!match[v] || Dfs(match[v])) { match[v] = x; return true; } } } return false;}int Matching(){ int ans = 0; memset(match,0,sizeof(match)); for (int i = 1; i <= num; i++) { memset(used, false, sizeof(used)); if (Dfs(i)) { ans++; } } return ans;}int main(void){ //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); int T, cas = 1; scanf("%d", &T); while (T--) { memset(head, 0, sizeof(head)); memset(a,0,sizeof(a)); memset(mp, 0, sizeof(mp)); cnt = 1; num = 1; scanf("%d", &n); for (int i = 0; i < n; i++) scanf(" %s", mp[i]); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (mp[i][j]=='#') a[i][j] = num++; num--; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j]) { if (i-1>=0 && a[i-1][j]) { add(a[i][j], a[i-1][j]); } if (i+1<n && a[i+1][j]) { add(a[i][j], a[i+1][j]); } if (j+1<n && a[i][j+1]) { add(a[i][j], a[i][j+1]); } if (j-1>=0 && a[i][j-1]) { add(a[i][j], a[i][j-1]); } } } } int ans = Matching(); printf("Case %d: %d\n", cas++, ans/2); } return 0;}
阅读全文
0 0
- hdu 4185Oil Skimming (二分匹配)
- hdu 4185 Oil Skimming (二分匹配)
- 【二分匹配】hdu 4185 Oil Skimming
- HDU 4185 Oil Skimming 二分图匹配
- HDU 4185 — Oil Skimming 二分匹配
- hdu 4185 Oil Skimming 二分图匹配
- hdu 4185 Oil Skimming 二分匹配
- hdu 4185 Oil Skimming (二分匹配)
- hdu 4185 Oil Skimming【二分匹配】
- HDU 4185 Oil Skimming 二分匹配
- HDU-4185-Oil Skimming [二分匹配]
- HDU 4185 Oil Skimming ( 二分匹配建图 )
- HDU 4185 Oil Skimming(二分图最大匹配)
- HDU 4185 Oil Skimming(离散化 + 二分图匹配)
- HDU 4185 Oil Skimming(二分图最大匹配)
- HDU 4185 Oil Skimming 【离散化二分匹配 黑白染色】
- HDU 4185 Oil Skimming(二分图最大匹配)
- hdu 4185 Oil Skimming (最大匹配)
- View与SurfaceView的区别与联系
- 网站记录文章浏览数的做法
- Java NIO 核心组件学习笔记
- JAVA_SSM框架+MINIUI实现网页报表
- 图结构练习——最短路径
- HDU-4185-Oil Skimming [二分匹配]
- linux定时任务的设置 crontab 配置指南
- MyBatis Mapper 接口如何通过JDK动态代理来包装SqlSession 源码分析
- 判断网络
- ng-option
- web service 对外发布一个hello world接口(入门)
- LCS,LCIS,LIS模板
- redis乐观锁实现秒杀
- DrawLayout