---恢复内容开始---

https://vjudge.net/problem/POJ-3020

题意

*--代表城市,o--代表空地

给城市安装无线网,一个无线网最多可以覆盖两座城市,问覆盖所有城市最少要用多少无线。

分析

第一眼看没什么感觉,但要是想到需要处理的点是城市,那这个问题就是一个最小路径覆盖问题了。因为最多覆盖两个城市,即相邻城市才匹配。最小路径覆盖=总节点数-最大匹配数。建图时是双向的,所以最大匹配数/2。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<algorithm>
const int MAXN= ;//最大顶点数
const int MAXM = ;//最大边数
const int INF=0x3f3f3f3f;
using namespace std; bool g[MAXN][MAXN],used[MAXN];
int linker[MAXN],index[MAXN][MAXN];
int dir[][]={{,},{,},{-,},{,-}};
int tot;
char s[MAXN][MAXN]; bool dfs(int u){
for(int v=;v<tot;v++){
if(!used[v]&&g[u][v]){
used[v]=true;
if(linker[v]==-||dfs(linker[v])){
linker[v]=u;
return true;
}
}
}
return false;
}
int hungry(){
int res=;
memset(linker,-,sizeof(linker));
for(int i=;i<tot;i++){
memset(used,false,sizeof(used));
if(dfs(i)) res++;
}
return res;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,m;
memset(index,-,sizeof(index));
memset(g,false,sizeof(g));
scanf("%d%d ",&n,&m);
tot=;
for(int i=;i<n;i++){
gets(s[i]);
for(int j=;j<m;j++){
if(s[i][j]=='*'){
index[i][j]=tot++;
}
}
}
for(int i=;i<n;i++){
for(int j=;j<m;j++){
if(index[i][j]!=-){
for(int k=;k<;k++){
int x=i+dir[k][];
int y=j+dir[k][];
if(x>=&&x<n&&y>=&&y<m&&index[x][y]!=-){
g[index[i][j]][index[x][y]]=true;
}
}
}
}
}
int res=hungry();
printf("%d\n",tot-res/);
}
return ;
}

POJ - 3020 Antenna Placement(最小覆盖路径)的更多相关文章

  1. poj 3020 Antenna Placement (最小路径覆盖)

    链接:poj 3020 题意:一个矩形中,有n个城市'*'.'o'表示空地,如今这n个城市都要覆盖无线,若放置一个基站, 那么它至多能够覆盖本身和相邻的一个城市,求至少放置多少个基站才干使得全部的城市 ...

  2. 二分图最大匹配(匈牙利算法) POJ 3020 Antenna Placement

    题目传送门 /* 题意:*的点占据后能顺带占据四个方向的一个*,问最少要占据多少个 匈牙利算法:按坐标奇偶性把*分为两个集合,那么除了匹配的其中一方是顺带占据外,其他都要占据 */ #include ...

  3. poj 3020 Antenna Placement(最小路径覆盖 + 构图)

    http://poj.org/problem?id=3020 Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

  4. POJ 3020 Antenna Placement 【最小边覆盖】

    传送门:http://poj.org/problem?id=3020 Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total ...

  5. POJ 3020 Antenna Placement【二分匹配——最小路径覆盖】

    链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  6. POJ 3020——Antenna Placement——————【 最小路径覆盖、奇偶性建图】

    Antenna Placement Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  7. POJ 3020 Antenna Placement 最大匹配

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6445   Accepted: 3182 ...

  8. poj 3020 Antenna Placement(二分无向图 匈牙利)

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6438   Accepted: 3176 ...

  9. POJ 3020 Antenna Placement

    Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5645 Accepted: 2825 Des ...

随机推荐

  1. 激活IntelliJ IDEA到2100年

    1.下载破解文件(破解版本2018.2,其他版本未尝试) http://idea.lanyus.com/jar/JetbrainsIdesCrack-4.2-release-sha1-3323d5d0 ...

  2. 自动化部署-Jenkins+SVN+MSBuild

    这篇文章主要介绍下使用Jenkins实现自动化部署 下载 https://jenkins.io/download/ 安装 按步骤安装即可,下载的是windows版本,安装完成后,会看到这样一个正在运行 ...

  3. 使用node-webkit(v0.35.5)和innosetup(3.6.1)打包将web程序打包为桌面客户端(安装包)

    这边主要是有一个客户,需要在电视机上安装一个客户端,含有视频直播功能:刚开始我们采用的webapp打包成apk安装在电视机上,发现摄像头监控画面根本无法播放(apk在手机上可以正常播放视频):排除一些 ...

  4. Git 命令简单罗列

    源教程出自 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 整 ...

  5. PAT甲题题解-1025. PAT Ranking (25)-排序

    排序,求整体的排名和局部的排名整体排序,for循环一遍同时存储整体目前的排名和所在局部的排名即可 #include <iostream> #include <cstdio> # ...

  6. 《Linux内核分析与设计》读书笔记二

    第五章 5.1 与内核通信57 系统调用在用户空间进程和硬件设备之间添加了一个中间层,该层主要作用有三个: 首先它为用户空间提供了一种硬件的抽象接口,举例来说当需要读写文件的时候,应用程序就可以不去管 ...

  7. 《Spring2之站立会议10》

    <Spring2之站立会议10> 昨天,添加完了表情库: 今天,对整个项目进行了测试: 遇到的问题:测试后觉得有些方面还不足,需要进一步改进.

  8. 软工第三次作业 -- 结对之AutoCS1.0

    031302331 031302223 一.将初始排课表导入系统数据库 法1:通过jxl解析excel,把数据插入数据库.较简单,预计用时60分钟 我们采取的是 法2(预计用时30分钟):我们使用的是 ...

  9. 作业C#程序分析

    阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...

  10. PAT 甲级 1051 Pop Sequence

    https://pintia.cn/problem-sets/994805342720868352/problems/994805427332562944 Given a stack which ca ...