HDU 4185 Oil Skimming(二分图最大匹配)
来源:互联网 发布:es5 sham.js 编辑:程序博客网 时间:2024/05/01 22:23
题意:有个N*N的字符矩阵,你必须用竖直或水平的1*2小矩阵去覆盖字符矩阵中相邻的两个”#”字符. 且你用的1*2小矩阵不能重叠且只能覆盖”#”字符. 问你最多能用多少个1*2的小矩阵?
思路:把原字符矩阵的所有”#”都编号看成一个一个的节点.如果有两个”#”相邻,那么就在它们之间连接一条边. 那么我们就得到了一个二分图 要求这个二分图的最大匹配边数,找出尽量多的匹配边. 那么这些匹配边就是一个个不重叠覆盖了”#”字符的1*2矩阵.
#include<cstdio>#include<cstring>#include<vector>using namespace std;const int maxn=1000+5;struct Max_Match{ int n; vector<int> g[maxn]; bool vis[maxn]; int left[maxn]; void init(int n) { this->n=n; for(int i=1; i<=n; ++i) g[i].clear(); memset(left,-1,sizeof(left)); } bool match(int u) { for(int i=0;i<g[u].size();++i) { int v=g[u][i]; if(!vis[v]) { vis[v]=true; if(left[v]==-1 || match(left[v])) { left[v]=u; return true; } } } return false; } int solve() { int ans=0; for(int i=1; i<=n; ++i) { memset(vis,0,sizeof(vis)); if(match(i)) ++ans; } return ans; }}MM;int cas=1;int mapp[maxn][maxn];int main(){ int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); int num = 0;memset(mapp,0,sizeof(mapp)); for (int i = 1;i<=n;i++)for (int j = 1;j<=n;j++){char temp;scanf(" %c",&temp);if (temp == '#')mapp[i][j]=++num;elsemapp[i][j]=0;}MM.init(num);for (int i = 1;i<=n;i++)for (int j = 1;j<=n;j++)if (mapp[i][j]>0){if (mapp[i+1][j]>0)MM.g[mapp[i][j]].push_back(mapp[i+1][j]);if (mapp[i-1][j] > 0)MM.g[mapp[i][j]].push_back(mapp[i-1][j]);if (mapp[i][j+1]>0)MM.g[mapp[i][j]].push_back(mapp[i][j+1]);if (mapp[i][j-1]>0)MM.g[mapp[i][j]].push_back(mapp[i][j-1]);} printf("Case %d: %d\n",cas++,MM.solve()/2); } return 0;}
0 0
- HDU 4185 Oil Skimming(二分图最大匹配)
- HDU 4185 Oil Skimming(二分图最大匹配)
- HDU 4185 Oil Skimming(二分图最大匹配)
- HDU 4185 Oil Skimming 二分图匹配
- hdu 4185 Oil Skimming 二分图匹配
- 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 【最大匹配】
- poj 1050 To the Max & uva 108
- 犀牛书随手记-06
- 学习笔记--数论大杂烩 (看心情更新)
- 2186: [Sdoi2008]沙拉公主的困惑 线性筛素数+欧拉函数+乘法逆元
- 2016年的希望
- HDU 4185 Oil Skimming(二分图最大匹配)
- 04环信聊天界面 - 接收方cell的布局
- Java匿名内部类浅析
- C 语言笔记
- 部署 Office Web Apps(2)
- 如何正确的启动或停止SQL Server数据库引擎
- 部署 Office Web Apps(3) - wopi host
- 通用块设备驱动程序框架分析
- UVA 1494 - Qin Shi Huang's National Road System(次小生成树)