<题目链接>

题目大意:
一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,每放置一个基站,至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?

解题分析:
将这n个城市看成二分图中的点集,基站匹配的圆圈看成两个点集之间的连线,要使圆圈圈住所有的点,即该二分图中所有的点都必须有线连接,并且使连接的线段条数最少。自然而然,本题就转化为了二分图的最小路径覆盖问题,用最少的边数,去覆盖所有的点。

二分图的最小路径覆盖 = 顶点数 – 最大匹配数(因为本题是无向的,所以最大匹配数为算出的结果/2) 

 #include <cstdio>
 #include <cstring>
 #include <algorithm>
 using namespace std;

 int h,w,vN,vM;
 ][];
 ][],vis[],match[],cnt[][];
 bool dfs(int x){
     ;i<=vM;i++){
         if(g[x][i]&&!vis[i]){
             vis[i]=;
             ||dfs(match[i])){
                 match[i]=x;
                 return true;
             }
         }
     }
     return false;
 }
 int Hungary(){
     ;
     memset(match,-,sizeof(match));
     ;i<=vN;i++){
         memset(vis,,sizeof(vis));
         if(dfs(i))res++;
     }
     return res;
 }
 int main(){
     int T;scanf("%d",&T);
     while(T--){
         scanf("%d%d",&h,&w);
         ;
         ;i<=h;i++){
             scanf();
             ;j<=w;j++)
                 if(mpa[i][j]=='*')cnt[i][j]=++pos;
         }
         //与周围四个方向的'*'建立匹配关系
         memset(g,,sizeof(g));
         ;i<=h;i++){
             ;j<=w;j++){
                 if(mpa[i][j]!='*')continue;
                 >=&&mpa[i-][j]==][j]]=;
                 >=&&mpa[i][j-]==]]=;
                 <=h&&mpa[i+][j]==][j]]=;
                 <=w&&mpa[i][j+]==]]=;
             }
         }
         vN=vM=pos;
         int ans=Hungary();
         printf();   //ans/2为最大匹配数,pos-ans/2为最小路径覆盖数
     }
 }

2018-11-14

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

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

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

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

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

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

    二分图题目 当时看到网上有人的博客写着最小边覆盖,也有人写最小路径覆盖,我就有点方了,斌哥(kuangbin)的博客上只给了代码,没有解释,但是现在我还是明白了,这是个最小路径覆盖(因为我现在还不知道 ...

  4. POJ3020 Antenna Placement(二分图最小路径覆盖)

    The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...

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

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

  6. POJ - 3020 Antenna Placement(最小覆盖路径)

    ---恢复内容开始--- https://vjudge.net/problem/POJ-3020 题意 *--代表城市,o--代表空地 给城市安装无线网,一个无线网最多可以覆盖两座城市,问覆盖所有城市 ...

  7. POJ 3020 Antenna Placement(二分图 匈牙利算法)

    题目网址:  http://poj.org/problem?id=3020 题意: 用椭圆形去覆盖给出所有环(即图上的小圆点),有两种类型的椭圆形,左右朝向和上下朝向的,一个椭圆形最多可以覆盖相邻的两 ...

  8. [POJ] 3020 Antenna Placement(二分图最大匹配)

    题目地址:http://poj.org/problem?id=3020 输入一个字符矩阵,'*'可行,'o'不可行.因为一个点可以和上下左右四个方向的一个可行点组成一个集合,所以对图进行黑白染色(每个 ...

  9. POJ - 3020  Antenna Placement 二分图最大匹配

    http://poj.org/problem?id=3020 首先注意到,答案的最大值是'*'的个数,也就是相当于我每用一次那个技能,我只套一个'*',是等价的. 所以,每结合一对**,则可以减少一次 ...

随机推荐

  1. linux命令知识点

    1. 例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令: 命令:ls -l t* 例六:计算当前目录下的文件数和目录数 命令: ls -l * |grep "^-&qu ...

  2. fatal: refusing to merge unrelated histories

    Git 提交代码时遇到冲突了,所以 git pull 拉不下来远程代码.使用一下命令解决: git pull origin master --allow-unrelated-histories 然后解 ...

  3. 快速理解VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  4. Confluence 6 自定义配色方案

    Confluence 的管理员可以修改 Confluence 的色彩配色方案.站点的默认配色方案将会在站点的默认空间上同时生效. 希望修改站点的配色方案: 在屏幕的右上角单击 控制台按钮 ,然后选择  ...

  5. SpringCloud注册中心(Eureka)

    注册中心的作用就是用来方便接口暴露出来的一个管理工具,如果所有的接口只是暴露出来,没有一个同一的管理工具,又有谁知道你暴露了哪些接口了,Eureka是一个springcloud的服务注册和发现模块 搭 ...

  6. Data Preprocess

    本文试图解决一个问题,即我们自定义的数据如何训练模型?初识深度学习,我们接触手写数字识别模型,但是批次数据是mnist已经定义好的,我们现在有自己的图片如何做成批次进行训练模型. 现在我们将准备好的原 ...

  7. Linux 系统根目录下各个文件夹的作用

    原文: https://blog.csdn.net/qq_26941173/article/details/78376760 /bin 系统由很多放置可执行文件的目录,但是bin目录比较特殊.因为bi ...

  8. Intenet 地址

    java.net.InetAddress类是java对Ip地址(包括ipv4和ipv6)的高层表示,大多数其他网络类都要用到这个类,包括Socket, ServerSocket, URL, Datag ...

  9. PDF如何添加水印,PDF添加水印工具的使用方法

    PDF文件在编辑修改的时候是需要借助工具才可以编辑,PDF文件不像普通的文件可以直接打开编辑,PDF编辑工具是PDF文件进行编辑的重要工具,就以添加水印为例,能够在PDF中添加水印的工具有哪些呢?要怎 ...

  10. Unity3D用户手册

    Unity Manual 用户手册 Welcome to Unity. 欢迎使用Unity. Unity is made to empower users to create the best int ...