题目:Antenna Placement

题意:

一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。

问至少放置多少个基站才能使得所有的城市都覆盖无线?

看本题更详细解法,请戳这里。

#include <iostream>
#include <string.h>
#define N 1150
int linker[N];
bool used[N];
int map[N][N];
int g[N][N];
int uN,vN;
int dire_r[4]={-1,1,0,0};
int dire_c[4]={0,0,-1,1};
bool DFS(int u)
{
int v;
for(v=1;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 u;
int ret=0;
memset(linker,-1,sizeof(linker));
for(u=1;u<=uN;u++)
{
memset(used,false,sizeof(used));
if(DFS(u))   ret++;
}
return ret;
}
int main()
{
char ch;
int n,m,t;
int i,j,k,p;
std::cin>>t;
while(t--)
{
p=0;
std::cin>>n>>m;
memset(g,0,sizeof(g));
memset(map,0,sizeof(map));
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
std::cin>>ch;
if(ch=='*')
map[i][j]=++p;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(map[i][j])
{
for(k=0;k<4;k++)
{
int x=i+dire_r[k];
int y=j+dire_c[k];
if(map[x][y])
g[map[i][j]][map[x][y]]=1;
}
}
}
}
uN=vN=p;
int ans=Hungary();
std::cout<<uN-ans/2<<std::endl;
}
return 0;
}

POJ3020深度解析(二分图--最小路径覆盖)相关推荐

  1. 洛谷 - P2764 最小路径覆盖问题(最大流+二分图最小路径覆盖+路径打印)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边组成的有向无环图,现在需要我们求最少可以将n个点分为多少条简单路径,并打印出每一条路径 题目分析:题意挺难懂的..简单来说就是让求二分图最小路径覆 ...

  2. POJ 3216 Repairing Company【二分图最小路径覆盖】

    题意: 告诉你 Q 格街区,一共有 M d 个任务分布在这Q 个街区里面,知道了每个任务的开始时间和需要一个人的完成时间,   问最少需要派多少人才能做完所有的任务. 分析: 求二分图的最小路径覆盖, ...

  3. CodeForcesGym 100753B Bounty Hunter II 二分图最小路径覆盖

    关键在建图 题解:http://www.cnblogs.com/crackpotisback/p/4856159.html 学习:http://www.cnblogs.com/jackiesteed/ ...

  4. 二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配

    二分图匹配 二分图大讲堂--彻底搞定最大匹配数(最小覆盖数).最大独立数.最小路径覆盖.带权最优匹配(转) 文本内容框架: §1图论点.边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法 ...

  5. 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)

    本文概论 二分图的判断方法:图中不存在奇数环----->染色法判断二分图不存在矛盾 二分图: 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i, ...

  6. DAG的最小路径覆盖和二分图的最大匹配

    DAG的最小路径覆盖和二分图的最大匹配 DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖. 首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中 ...

  7. POJ - 2594 Treasure Exploration(最小路径覆盖-二分图最大匹配+传递闭包)

    题目链接:点击查看 题目大意:给出一个有向图,现在需要让最少的机器人沿着图遍历所有点,求出最少需要机器人的数量,注意每个点可以重复遍历 题目分析:因为要遍历所有点,所以还是变成了二分图的最小路径覆盖问 ...

  8. HDU - 1151 Air Raid(最小路径覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个有向图,现在需要在不同的地方空降伞兵,保证所有伞兵沿着道路可以走完所有城市,求出最少伞兵的数量 题目分析:我们的目的是要用最少的路径覆盖所有顶点,换句话说就是二分 ...

  9. hdu 4160 (Dolls)二分图的最小路径覆盖

    关于二分图,让人很头疼啊!归结为一句话,就是看不出来题目是二分图的问题. 也许是对二分图不太熟悉吧!需要多练习! 题目大意:给出n个箱子,每个箱子的参数为长,宽,高:(a,b,c):当且仅当箱子s1, ...

最新文章

  1. node编写定时任务,for循环只执行一遍的解决办法
  2. Kali Linux发布2020.1a版本
  3. blob转file对象_C++核心准则C.41:构造函数生成的对象应该被完全初始化
  4. [云炬创业管理笔记]第6章制定创业行动测试3
  5. linux脚本多个条件比较大小,shell脚本-比较两个整数大小
  6. 如何将Linux还原为win10,技术编辑为你解说win10系统Linux Bash命令的还原步骤
  7. 找不到“javax.servlet.annotation.WebServlet“解决方法
  8. Navicat Premium For Mac破解版
  9. Julia Pro国内下载地址
  10. Java中IO和NIO的区别
  11. 捷径|抖音去水印教程
  12. 用计算机计算数学公式,Formula Calculator公式计算器
  13. ITIL学习笔记——核心流程之:配置管理
  14. asp空间和php空间_两个最新空间及回顾100Mphp及数个asp免费空间放
  15. mysql数据库data没有新创建_如何从pandas datafram在MySQL数据库中创建新表
  16. 1132: 数字字符统计
  17. OpenEuler树莓派基础实验 20212802范辰宇
  18. 安卓蓝牙开发(1)BLE蓝牙基础知识和一般开发流程
  19. WKWebView预初始化
  20. 自定义异常BizException

热门文章

  1. 基于Redis优化首页轮播图查询
  2. Lambda表达式的注意事项【理解】
  3. 进化之路:线程池来帮忙,却好心办坏事
  4. ServletContext_功能_获取文件服务器路径
  5. 【报错笔记】Navicat连接数据库显示2003错误,无法连接到数据库
  6. 开始使用Lumen吧,3分钟搞定登陆认证
  7. 2017年关于数据科学的六大预言
  8. 【原创】网络报文抓取研究
  9. 【蒲公英技术征文】如何在 ESP-12F/ESP8266 上实现 webserver
  10. git clone的源码在vim打开时是乱码