hdoj1045 Fire Net(二分图最大匹配)

题意:给出一个图,其中有 . 和 X 两种,. 为通路,X表示墙,在其中放炸弹,然后炸弹不能穿过墙,问你最多在图中可以放多少个炸弹?

 

这个题建图有点复杂orz。

建图,首先把每一行中的可以放一个炸弹的一块区域标记为同一个数字,数字不重复,然后列做相同的处理,即缩点!

缩点之后原图矩阵中每个点都对用一个行数字和一个列数字,然后按照这两个数字进行二分匹配,其相同值只取一个,得到的结果就是ans。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #define maxn 10
 6 using namespace std;
 7 int n;
 8 int cnt_row,cnt_col;
 9 char map[maxn][maxn];
10 int line[maxn][maxn],row[maxn][maxn],col[maxn][maxn],match[maxn],used[maxn];
11 int dfs(int x){
12     for (int i=0;i<cnt_col;i++){
13         if (line[x][i]==1 && !used[i]){
14             used[i]=1;
15             if (match[i]==-1 || dfs(match[i])){
16                 match[i]=x;
17                 return 1;
18             }
19         }
20     }
21     return 0;
22 }
23 int main(){
24     while (cin >> n && n){
25         for (int i=0;i<n;i++){
26             for (int j=0;j<n;j++){
27                 cin >> map[i][j];
28             }
29         }
30         memset(row,-1,sizeof(row));
31         memset(col,-1,sizeof(col));
32         cnt_row=0,cnt_col=0;
33         for (int i=0;i<n;i++){
34             for (int j=0;j<n;j++){
35                 if (map[i][j]=='.' && row[i][j]==-1){
36                     for (int k=j;map[i][k]=='.' && k<n;k++) row[i][k]=cnt_row;
37                     cnt_row++;
38                 }
39                 if (map[j][i]=='.' && col[j][i]==-1){
40                     for (int k=j;map[k][i]=='.' && k<n;k++) col[k][i]=cnt_col;
41                     cnt_col++;
42                 }
43             }
44         }
45         memset(line,0,sizeof(line));
46         for (int i=0;i<n;i++){
47             for (int j=0;j<n;j++){
48                 if (map[i][j]=='.' && row[i][j]!=-1 && col[i][j]!=-1) 
49                     line[row[i][j]][col[i][j]]=1;
50             }
51         }
52         int ans=0;
53         memset(match,-1,sizeof(match));
54         for (int i=0;i<cnt_row;i++){
55                 memset(used,0,sizeof(used));
56                 if (dfs(i)) ans++;
57         }
58         cout << ans << endl;
59     }
60     return 0;
61 }

 

转载于:https://www.cnblogs.com/changer-qyz/p/8650321.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++的命名空间

一.C的命名原则namespace是指标识符的各种可见范围&#xff0c;c的所有标识符都被定义在一个名为std的namespace中。1.<iostream>和<iostream.h>是两个不同的文件&#xff0c;后缀为.h的头文件c标准已经明确提出不支持了&#xff0c;早些的实现将标准库功能定义在全…

投阿里被拒,说跳槽太频繁!三年两个工作,问题真的那么大吗?

什么样的跳槽频率才不算频繁&#xff1f;一位网友发问&#xff1a;投阿里被拒&#xff0c;理由是跳槽太频繁&#xff0c;不合适。三年两个工作&#xff0c;问题真的那么大吗&#xff1f;网友说&#xff0c;阿里对稳定性要求非常高&#xff0c;三年两跳和五年三跳都是红线&#…

Linux下防御DDOS攻击的操作梳理

DDOS的全称是Distributed Denial of Service&#xff0c;即"分布式拒绝服务攻击"&#xff0c;是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源&#xff0c;从而使被攻击的主机不能为合法用户提供服务。 DDOS攻击的本质是…

为什么信息化 ≠ 数字化?终于有人讲明白了

作者&#xff1a;石秀峰 来源&#xff1a;谈数据&#xff08;ID&#xff1a;learning-bigdata&#xff09; 近期&#xff0c;我一做数字化咨询的朋友&#xff08;化名老王&#xff09;遇到了一个头痛的问题&#xff1a;话说老王的团队近期接了一个大单——一大型制造业的数字化…

JAVA代码—算法基础:数独问题(Sodoku Puzzles)

JAVA代码—算法基础&#xff1a;数独问题&#xff08;Sodoku Puzzles&#xff09; 数独问题&#xff08;Sodoku Puzzles&#xff09; 数独游戏&#xff08;日语&#xff1a;数独 すうどく&#xff09;是一种源自18世纪末的瑞士的游戏&#xff0c;后在美国发展、并在日本得以发扬…

Linux系统恢复

实验目的&#xff1a;熟悉了前面的启动流程&#xff0c;系统的一个大致的启动流程是怎样的&#xff0c;而其中牵扯到了些许文件&#xff0c;这些文件在系统启动时用于衔接各个步骤&#xff0c;如果这些文件损坏或缺失&#xff0c;系统将不能正常启动&#xff0c;这次写的内容就…

PerfView专题 (第二篇):如何寻找 C# 中的 Heap堆内存泄漏

一&#xff1a;背景 上一篇我们聊到了如何去找 热点函数&#xff0c;这一篇我们来看下当你的程序出现了 非托管内存泄漏 时如何去寻找可疑的代码源头&#xff0c;其实思路很简单&#xff0c;就是在 HeapAlloc 或者 VirtualAlloc 时做 Hook 拦截&#xff0c;记录它的调用栈以及分…

关于 extern C的说明

在用C的项目源码中&#xff0c;经常会不可避免的会看到下面的代码 1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 5 /*...*/ 6 7 #ifdef __cplusplus 8 } 9 #endif 它到底有什么用呢&#xff0c;你知道吗&#xff1f;而且这样的问题经常会出现在面试or笔试…

Nginx 面试 40 问

Nginx是一款轻量级的Web服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛应用。 那么关于 Nginx 的核心技术点有哪些呢&#xff1f; 什么是Nginx&#xff1f; Nginx是一个 轻量级/高性能的…

用Cocos2dx开发棋牌游戏的观点解析

众所周知&#xff0c;目前棋牌游戏特别的火。很多游戏公司都想在这一块赚钱&#xff0c;可是却不知用什么软件比较好的去开发棋牌游戏&#xff0c;对此&#xff0c;我列出了两款比较靠谱的软件去开发棋牌游戏&#xff0c;希望对大家有帮助&#xff01; 第一款软件是cocos2dx,它…

JavaWEB中读取配置信息

第一种方法是使用java.io和java.util包&#xff0c;缺点是路径的概念要清晰&#xff0c;例子&#xff1a; Properties prop new Properties();InputStream in getClass().getResourceAsStream("/common.properties");try {prop.load(in);pool new JedisPool(config…

我把《系统设计》系列整理成了 PDF

大家好&#xff0c;我是等天黑。相信很多朋友应该注意到了&#xff0c;我最近发了很多系统设计的文章。是的&#xff0c;到目前为止&#xff0c;已经发了有 7 篇文章。这些内容主要翻译自 Alex Xu 的 《System Design Interview》&#xff0c;有卷一和卷二两本。System Design …

高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型&#xff0c;常见的IO模型有四种&#xff1a; &#xff08;1&#xff09;同步阻塞IO&#xff08;Blocking IO&#xff09;&#xff1a;即传统的IO模型。 &#xff08;2&#xff09;同步非阻塞IO&#xff08;Non-blocking IO&#xff09;…

Java线程通信的几种方式

一、问题 有两个线程&#xff0c;A 线程向一个集合里面依次添加元素“abc”字符串&#xff0c;一共添加十次&#xff0c;当添加到第五次的时候&#xff0c;希望 B 线程能够收到 A 线程的通知&#xff0c;然后 B 线程执行相关的业务操作。线程间通信的模型有两种&#xff1a;共享…

PHP个人博客项目------切切歆语博客

2019独角兽企业重金招聘Python工程师标准>>> phpmysqlapache, ThinkPHP3.2框架开发 我的个人博客项目 适合新手练习 源码地址下载&#xff1a;https://github.com/DickyQie/php-myblog 转载于:https://my.oschina.net/zhangqie/blog/1785867

收发邮件之 MAILKIT

背景利用代码发送邮件在工作中还是比较常见的&#xff0c;相信大家都用过SmtpClient来处理发送邮件的操作&#xff0c;不过这个类以及被标记已过时&#xff0c;所以介绍一个微软推荐的库MailKit来处理。MailKit开源地址&#xff1a;https://github.com/jstedfast/MailKit需要邮…

IOS_SearchBar搜索栏及关键字高亮

搜索框的效果演示: 这个就是所谓的搜索框了,那么接下来我们看看如何使用代码来实现这个功能. 我所使用的数据是英雄联盟的英雄名单,是一个JSON数据的txt文件, JSON数据的处理代码如下所示: ?123456//获取文件的路径pathNSString *path [[NSBundle mainBundle] pathForResourc…

Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式

工厂模式&#xff1a; 工厂模式可以分为三类&#xff1a; 1&#xff09;简单工厂模式&#xff08;Simple Factory&#xff09; 2&#xff09;工厂方法模式&#xff08;Factory Method&#xff09; 3&#xff09;抽象工厂模式&#xff08;Abstract Factory&#xff09; 简单工…

今天很多 CTO 都是被干掉的,因为他没有成就业务

作者&#xff5c;乔新亮 编辑&#xff5c;邓艳琴 我可以丝毫不开玩笑地说&#xff0c;今天&#xff0c;很多传统企业里的研发都只是“工人”&#xff0c;哪怕是 CTO&#xff0c;充其量也只是“高级工人”&#xff0c;如果不转换思维去成就业务&#xff0c;就只能停留在工人级…

中航工业集团金网络(北京)电子商务有限公司副总经理刘正珩:航空“智”造的供应链支撑平台...

编者按 “十三五”时期是我国贸易发展的重要战略机遇期&#xff0c;物流产业发展迅速&#xff0c;智慧供应链已经成为推动流通大国向流通强国过程中的重要行动。6月2日&#xff0c;由上海市国有资产监督管理委员会、上海市邮政管理局、上海市商务委员会指导&#xff0c;上海市国…