http://poj.org/problem?id=3020

题意:

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

无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2

 1 #include <stdio.h>
 2 #include <string.h>
 3 const int N=505;
 4 int pos[N][N],map[N][N];
 5 int link[N];
 6 bool vis[N];
 7 int dir[4][2] = {{0,-1},{0,1},{1,0},{-1,0}};
 8 int n;
 9 int dfs(int x)
10 {
11     for (int i = 1; i <= n; i++)
12     {
13         if (map[x][i]&&!vis[i])
14         {
15             vis[i] = true;
16             if(!link[i]||dfs(link[i]))
17             {
18                 link[i] = x;
19                 return 1;
20             }
21         }
22     }
23     return 0;
24 }
25 int main()
26 {
27     char ch;
28     int t,h,w;
29     scanf("%d",&t);
30     while(t--)
31     {
32         int id = 0;
33         int ans = 0;
34         scanf("%d%d%*c",&h,&w);
35         memset(pos,0,sizeof(pos));
36         memset(map,0,sizeof(map));
37         memset(link,0,sizeof(link));
38         for(int i = 1; i <= h; i++)
39         {
40             for (int j = 1; j <= w; j++)
41             {
42                 scanf("%c",&ch);
43                 if (ch=='*')
44                     pos[i][j] = ++id;
45             }
46             getchar();
47         }
48         for (int i = 1; i <= h; i++)
49         {
50             for (int j = 1; j <= w; j++)
51             {
52                 if(pos[i][j])
53                     for (int k = 0; k < 4; k++)
54                     {
55                         int dx = i+dir[k][0];
56                         int dy = j+dir[k][1];
57                         if(pos[dx][dy])
58                         {
59                             map[pos[i][j]][pos[dx][dy]] = 1;
60                         }
61                     }
62             }
63         }
64         n = id;
65         for (int i = 1; i <= n; i++)
66         {
67             memset(vis,0,sizeof(vis));
68             if(dfs(i))
69                 ans++;
70         }
71         printf("%d\n",n-ans/2);//无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2
72     }
73     return 0;
74 }

View Code

转载于:https://www.cnblogs.com/lahblogs/p/3544930.html

Antenna Placement(二分图的最大匹配)相关推荐

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

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

  2. 用匈牙利算法求二分图的最大匹配

    转载大神的!! 什么是二分图,什么是二分图的最大匹配,这些定义我就不讲了,网上随便都找得到.二分图的最大匹配有两种求法,第一种是最大流(我在此假设读者已有网络流的知识):第二种就是我现在要讲的匈牙利算 ...

  3. CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题

    题意:求二分图的最大匹配数量 模版如下: //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹 ...

  4. 二分图的最大匹配 匈牙利算法

    基本概念 1.二分图: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别 ...

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

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

  6. POJ 2584 T-Shirt Gumbo (二分图多重最大匹配)

    题意 现在要将5种型号的衣服分发给n个参赛者,然后给出每个参赛者所需要的衣服的尺码的大小范围,在该尺码范围内的衣服该选手可以接受,再给出这5种型号衣服各自的数量,问是否存在一种分配方案使得每个选手都能 ...

  7. 二分图的最大匹配-解决匹配问题

    题目描述 题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数 ...

  8. 【网络流】基础二分图的最大匹配问题

    标题已经说了,所以有基础的牛们就别想在这篇博客里看到什么有价值的东西.这里的解法是最基础的. 二分图是一种可以把图中的点分为两个不同的集合,且同一集合中不存在任意两个有边联通的点(就算是单向边也不行) ...

  9. Jamie's Contact Groups ——(一对多)二分图多重最大匹配

    题目链接:http://poj.org/problem?id=2289 Jamie is a very popular girl and has quite a lot of friends, so ...

  10. 861. 二分图的最大匹配

    861. 二分图的最大匹配 给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边. 数据保证任意一条边的两个端点都不可能在同一 ...

最新文章

  1. Android网络课程笔记-----定制通知系统
  2. VC++ MFC中如何将应用程序的配置信息保存到注册表中(一)
  3. django oracle clob,记一次clob字段损坏导致的01555错误
  4. echarts异步加载柱状图遇到的错误- Error: Component series. not exists. Load it first.
  5. 「雕爷学编程」Arduino动手做(33)——ESP-01S无线WIFI模块
  6. day5 Java中的方法与重载
  7. 洛谷 P2764(最小路径覆盖=节点数-最大匹配)
  8. C# 连接 Exchange 发送邮件
  9. dell 7040m 黑苹果_618晒单如何打造一台万元级10代酷睿黑苹果
  10. 人工智能导论(专家系统)
  11. 如何破解无线网密码进行上网
  12. 【每天一个 Linux 命令】ssh 命令
  13. 混合移动应用中地图导航功能开发与应用
  14. USB3.2超高速协议规范
  15. Unity 第三方SDK框架接入 (Android Studio)
  16. 《VALORANT》: 双塔迷城的诞生
  17. 我打不了字计算机应用怎么办,键盘正常为什么打不了字 电脑键盘失灵怎么解决...
  18. 数字电子技术 实验一
  19. 前端自动化测试之chai.js断言库
  20. XSL语言(XSL Languages)(1)XSL Languages

热门文章

  1. nginx源码阅读 ---- Event模块和配置的初始化
  2. Nginx源码编译及安装
  3. 《设计模式之美》之接口、抽象类笔记
  4. SpringMVC小结(四)
  5. Struts2之入门
  6. [渝粤教育] 天津科技大学 人工智能导论 参考 资料
  7. caffe之 Blob、Layer、Net
  8. SuperPoint学习---demo代码理解
  9. Matlab处理图像二三例
  10. [转]关于computer vision的会议及vision guys