poj3020
define n the number of ' * '
define d the number of couple of two points
define s the single point that can't link to others ( means no points around it in 4 directions )
n = 2 * d + s ;
d + s = n - d
use Hungary finding out the d
#include <stdio.h>
#include <string.h>
char gird[][];
int number[][];
int graph[][];
int in[];
int already[];
int cnt; struct node{
int x,y;
}p[];
int dir[][]={ ,,,-,-,,,}; int find(int a){
int i;
for(i=;i<cnt;++i){
if( graph[a][i]== && in[i]== ){
in[i]=;
if( already[i]==- || find( already[i] )){
already[i]=a;
return ;
}
}
}
return ;
} int main(){
int t;
int n,m,i,j;
int tx,ty,tnum;
int res;
while(~scanf("%d",&t)){
while(t--){
res=;
cnt=;
memset(in,,sizeof(in));
memset(graph,,sizeof(graph));
for(i=;i<;++i) already[i]=-;
scanf("%d%d",&n,&m);
for(i=;i<n;++i){
scanf("%s",gird[i]);
for(j=;j<m;++j)
if(gird[i][j]=='*'){
number[i][j]=cnt;
p[cnt].x=i;
p[cnt].y=j;
cnt++;
}
}
for(i=;i<cnt;++i){
for(j=;j<;++j){
tx=p[i].x+dir[j][];
ty=p[i].y+dir[j][];
if((!(tx>=&&tx<n&&ty>=&&ty<m))||gird[tx][ty]!='*') continue;
tnum=number[tx][ty];
graph[i][tnum]=;
}
}
for(i=;i<cnt;++i){
memset(in,,sizeof(in));
if(find(i)==)
res++;
}
printf("%d\n",cnt-res/);
}
}
return ;
}
poj3020的更多相关文章
- 【poj3020】 Antenna Placement
http://poj.org/problem?id=3020 (题目链接) 题意 给出一个矩阵,矩阵中只有‘*’和‘o’两种字符,每个‘*’可以向它上下左右四个方位上同为‘*’的点连一条边,求最少需要 ...
- POJ3020——Antenna Placement(二分图的最大匹配)
Antenna Placement DescriptionThe Global Aerial Research Centre has been allotted the task of buildin ...
- poj3020 Antenna Placement 匈牙利算法求最小覆盖=最大匹配数(自身对应自身情况下要对半) 小圈圈圈点
/** 题目:poj3020 Antenna Placement 链接:http://poj.org/problem?id=3020 题意: 给一个由'*'或者'o'组成的n*m大小的图,你可以用一个 ...
- POJ-3020 Antenna Placement---二分图匹配&最小路径覆盖&建图
题目链接: https://vjudge.net/problem/POJ-3020 题目大意: 一个n*m的方阵 一个雷达可覆盖两个*,一个*可与四周的一个*被覆盖,一个*可被多个雷达覆盖问至少需要多 ...
- POJ3020 Antenna Placement —— 最大匹配 or 最小边覆盖
题目链接:https://vjudge.net/problem/POJ-3020 Antenna Placement Time Limit: 1000MS Memory Limit: 65536K ...
- 二分图之最小边覆盖(poj3020)
题目:poj3020 题意:给出一个图,让你用最少的1*2的纸片覆盖掉图中的全部*出现过的地方. 基本裸的最小边覆盖. 分析: 最小边覆盖 = 点总数 - 最大匹配 所以就是转化为求最大匹配. 跟前面 ...
- POJ3020 匹配
题目大意:给定一地图,*可以和相邻的*匹配成一对儿,问最少需要对儿匹配才能使所有*都被匹配到. 很直白的最小点覆盖,即ans = 点集数-最大匹配数. 不过一开始要对图进行遍历得到点集,找到一个*就把 ...
- hdu4185+poj3020(最大匹配+最小边覆盖)
传送门:hdu4185 Oil Skimming 题意:n*n的方格里有字符*和#,只能在字符#上放1*2的板子且不能相交,求最多能放多少个. 分析:直接给#字符编号,然后相邻的可以匹配,建边后无向图 ...
- poj3020二分图匹配
The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...
随机推荐
- weinre 手机端页面调试
Weinre代表 Web Inspector Remote,是一种远程调试工具, 采用nodejs做为http服务器,用ajax通信 nodejs 官网 weinre官网 1.安装nodejs 会自 ...
- ZOJ 3601 Unrequited Love 浙江省第九届省赛
Unrequited Love Time Limit: 16 Seconds Memory Limit: 131072 KB There are n single boys and m si ...
- mvc无法找到资源
昨天装了vs2015,但是第二步没有完成.今天急急忙忙的用13打开一个mvc的项目,但是添加的控制器怎么都不能访问. 无法找到资源. 说明: HTTP 404.您正在查找的资源(或者它的一个依赖项)可 ...
- gridView--GridView关于间距的属性值介绍
android:columnWidth 设置列的宽度.关联的方法为:setColumnWidth(int) android:gravity 设置此组件中的内容在组件中的位置.可选的值有:top.b ...
- 深入ThreadLocal之二
概述 相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路:ThreadLocal的目的是为了解决多线程访问资 ...
- git相关网页
git.apache2.gerrit安装 1.http://blog.csdn.net/benkaoya/article/details/8680886 2.http://fatalove.iteye ...
- Linux下SVN服务器安装配置及客户端安装说明
原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_ ...
- log4Net使用 z
http://logging.apache.org/log4net/1.Log4net主要结构分析 1.1 Logger:是应用程序与Log4net进行交互的主要模块,它也是log4net生成log ...
- Linux php 中文乱码解决
在ubuntu下php网页输出乱码,在不涉及数据库编码的情况下: 修改“/etc/php5/apache2/php.ini”将 default_charset = "iso-8859-1&q ...
- 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET S ...