hdu5093Battle ships(二分图)
来源:互联网 发布:淘宝有好看的衣服牌子 编辑:程序博客网 时间:2024/05/17 16:54
这个题目刚开始看根本开不出来是二分图,后来问了别人看了题解才搞懂,这个题是按照行和列再加上冰山然后分区域,然后因为行列不能挨着,所以把他们分成两个集合,然后一匹配就出来了
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int MAXN =60;const int MAXM =3600;int linker[MAXM];bool used[MAXM];char s[MAXN][MAXN];int h[MAXN][MAXN];int l[MAXN][MAXN];bool g[MAXM][MAXM];int un,vn;bool dfs(int u){ for(int v=0; v<vn; v++) if(g[u][v]&&!used[v]) { used[v]=true; if(linker[v]==-1||dfs(linker[v])) { linker[v]=u; return true; } } return false;}int hungary(){ int res=0; memset(linker,-1,sizeof(linker)); for(int u=0; u<un; u++) { memset(used,false,sizeof(used)); if(dfs(u)) res++; } return res;}void init(){ un=0; vn=0; memset(s,0,sizeof(s)); memset(h,0,sizeof(h)); memset(l,0,sizeof(l)); memset(g,0,sizeof(g));}int main(){ int T,n,m; cin>>T; while(T--) { init(); cin>>n>>m; for(int i=0; i<n; i++) scanf("%s",s[i]); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { if(s[i][j]=='*') { h[i][j]=un; } if(s[i][j]=='#')//遇到冰山就++,意思是跟之前的区域区分开来 un++; } un++; } for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { if(s[j][i]=='*') l[j][i]=vn; if(s[j][i]=='#') vn++; } vn++; } for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(s[i][j]=='*') { g[h[i][j]][l[i][j]]=1;//这块是加边的地方 } } int ans=hungary(); cout<<ans<<endl; } return 0;}
0 0
- hdu5093Battle ships(二分图)
- HDU5093 Battle ships (二分图)
- hdoj--5093--Battle ships(二分图经典建图)
- HDU 5093 Battle ships(二分图最大匹配)
- HDOJ 题目5093 Battle ships(二分图)
- HDU 5093 Battle ships(二分图匹配)
- hdu 5093 Battle ships(最大流 || 二分图)
- hdu 5093 Battle ships(二分图匹配)
- HDU 5093 Battle ships(二分图匹配)
- HDU 5093 Battle ships(二分图匹配)
- hdu 5093 Battle ships(二分图匹配)
- hdu 5093 Battle ships 二分图匹配
- HDOJ 5093 Battle ships 二分图匹配
- hdu 5093 Battle ships(二分图匹配)
- HDU 5093 Battle ships [二分图匹配]
- hdoj5093Battle ships【二分图最大匹配】
- HDU 5093 Battle ships 二分图!
- hdu5093 Battle ships 二分图匹配
- ffmpeg 将图片序列合成为一段视频
- Struts2基础知识(三)
- apache+tomcat集群配置
- 3递归爬楼梯
- CPU流水线的探秘之旅
- hdu5093Battle ships(二分图)
- InetAddress.getLocalHost()详解及异常处理
- Hadoop之MapReduce的HelloWorld(七)
- android studio 程序真机运行中文显示乱码
- HDU 2112
- 软件开发的常用开发模式
- 搭建gpu的theano
- C++学习(一)——标准库类型之string全解析
- 牛客网今日头条笔试详解