poj2226
来源:互联网 发布:c语言 设备端接入 编辑:程序博客网 时间:2024/06/16 13:51
不要直接用行当X,列当Y。这样会出错误的。
应该是统计横着的板子数作为X,竖着的板子数作为Y
原图 按行来数 按列来数
*.*.
.***
***.
..*.
之后对应连线。
比如坐标(0,0)处,行为1,列为1. 那么连接1,1;
坐标(2,0)-(2,2)处,行为4,4,4,列为2,3,4.那么连接4,2 4,3 4, 4即可
- #include <iostream>
- using namespace std;
- #define MAXV 1000
- #define MAXS 60
- char s[MAXS][MAXS];
- bool map[MAXV][MAXV];
- int tmp[MAXS][MAXS],n,m,cvsum,rvsum;
- int link[MAXV],use[MAXV];
- void build_gragh(){
- int i,j,flag=0;
- cvsum=rvsum=0;
- memset(map,0,sizeof(map));
- memset(tmp,0,sizeof(tmp));
- for(i=1;i<=n;i++){
- flag=0;
- for(j=1;j<=m;j++){
- if(flag==0 && s[i][j]=='*'){ flag=1; cvsum++; }
- if(flag==1 && s[i][j]=='*') tmp[i][j]=cvsum;
- if(s[i][j]=='.') flag=0;
- }
- }
- for(i=1;i<=m;i++){
- flag=0;
- for(j=1;j<=n;j++){
- if(flag==0 && s[j][i]=='*'){ flag=1; rvsum++; }
- if(flag==1 && s[j][i]=='*') map[tmp[j][i]][rvsum]=1;
- if(s[j][i]=='.') flag=0;
- }
- }
- }
- int dfs(int x){
- int i,j;
- for(i=1;i<=rvsum;i++)
- if(!use[i] && map[x][i]){
- use[i]=1;j=link[i];link[i]=x;
- if(j==-1 || dfs(j)) return true;
- link[i]=j;
- }
- return false;
- }
- int hungary(){
- int num=0,i,j;
- memset(link,-1,sizeof(link));
- for(i=1;i<=cvsum;i++){
- for(j=1;j<=rvsum;j++) use[j]=0;
- if(dfs(i)) num++;
- }
- return num;
- }
- int main(){
- int i;
- while(~scanf("%d%d\n",&n,&m)){
- for(i=1;i<=n;i++) gets(s[i]+1);
- build_gragh();
- printf("%d\n",hungary());
- }
- return 0;
- }
阅读全文
0 0
- poj2226
- POJ2226
- poj2226
- POJ2226
- poj2226
- POJ2226
- poj2226
- POJ2226 Muddy Fields
- poj2226 - Muddy Fields
- POJ2226 Muddy Fields
- poj2226 Muddy Fields
- poj2226 Muddy Fields
- poj2226 Muddy Fields
- poj2226 二分图匹配
- poj2226(最小点覆盖)
- POJ2226 Muddy Fields
- POJ2226 Muddy Fields
- poj2226 muddy fields
- 结构体定义的几种方式
- 栈的应用-----括号配对
- 关于Json格式中时间格式转化问题
- Codeforces 101206 I & HDU 6007 Mr. Panda and Crystal
- iOS -如何让你写的代码更规范
- poj2226
- 翻转单词顺序列java实现
- Hibernate原理及工作流程
- chmod g+s 、chmod o+t 、chmod u+s详细说明
- 数据库中事务、存储过程、函数、同义词的使用
- javascript线程解释(setTimeout,setInterval你不知道的事)
- [leetcode] 257. Binary Tree Paths
- 满二叉树思想的应用------小猴子下落
- fstab文件详解