计蒜客-A1139 dfs
在一个 n \times mn×m 的方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。

现在为了引爆地图上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把地图上的所有炸弹引爆。
输入格式
第一行输两个整数 n,mn,m,用空格隔开。
接下来 nn 行,每行输入一个长度为 mm 的字符串,表示地图信息。0表示没有炸弹,1表示炸弹。
数据约定:
对于 60\%60% 的数据:1 \le n, m \le 1001≤n,m≤100;
对于 100\%100% 的数据:1 \le n, m \le 10001≤n,m≤1000;
数据量比较大,不建议用cin输入。
输出格式
输出一个整数,表示最少需要手动引爆的炸弹数。
样例输入
5 5
00010
00010
01001
10001
01000
样例输出
2
题解:
你首先要明白一点,如果你第一次点燃1号炸弹能引爆2、3、4、5、6号炸弹,那么你第一次点燃2号炸弹同样也能引爆1、3、4、5、6号炸弹,点燃3、4、5、6号炸弹也是这样
那么我们就随机挑出来一个炸弹先点燃它,把由这个炸弹引燃的炸弹删去,再从剩下的炸弹中在挑选一个,,,依次进行,知道没有炸弹为止
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include<vector>
7 #include<queue>
8 #include<map>
9 using namespace std;
10 typedef long long ll;
11 const int maxn=1010;
12 const int INF=0x3f3f3f3f;
13 int Map[maxn][maxn];
14 int m,n,ans=0;
15 int row[maxn];
16 int col[maxn];
17 int dfs(int i,int j)
18 {
19 Map[i][j]=0;
20 if(!col[j])
21 {
22 col[j]=1;
23 for(int k=1; k<=n; k++)
24 {
25 if(Map[k][j]==1)
26 {
27 dfs(k,j);
28 //Map[k][j]=0;
29 }
30
31 }
32 }
33 if(!row[i])
34 {
35 row[i]=1;
36 for(int l=1; l<=m; l++)
37 {
38 if(Map[i][l]==1)
39 {
40 dfs(i,l);
41 //Map[i][l]=0;
42 }
43
44 }
45 }
46 }
47 int main()
48 {
49 scanf("%d%d",&n,&m);
50 for(int i=1; i<=n; i++)
51 {
52 for(int j=1; j<=m; j++)
53 {
54 scanf("%1d",&Map[i][j]); //%1d代表就输入一个数字就结束此次输入
55 }
56 }
57 for(int i=1; i<=n; i++)
58 {
59 for(int j=1; j<=m; j++)
60 {
61 if(Map[i][j]==1)
62 {
63 dfs(i,j);
64 ans++;
65 }
66 }
67 }
68 printf("%d\n",ans);
69 return 0;
70 }
计蒜客-A1139 dfs的更多相关文章
- 计蒜客 等边三角形 dfs
		
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
 - 计蒜客 踏青 dfs
		
题目: https://www.jisuanke.com/course/2291/182234 思路: 紫书P163联通块问题. 1.遍历所有块,找到草地,判断合法性,合法其id值加一,最后加出来的i ...
 - 计蒜客的一道题dfs
		
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
 - 计蒜客 方程的解数 dfs
		
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
 - 计蒜客 买书 dfs
		
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
 - 计蒜客 NOIP 提高组模拟竞赛第一试 补记
		
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
 - [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】
		
Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...
 - 计蒜客  作弊揭发者(string的应用)
		
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
 - 计蒜客模拟赛5 D2T1 成绩统计
		
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
 
随机推荐
- oracle出现未选定行
			
初学oracle,在SQLplus输入查询命令 出现了以下情况.. 后来了解到oracle的SQL语句其中有些词必须大写才会有效. 在这个语句中将username后面的值改为大写就可以了. 还有一种就 ...
 - 【Linux】关于CentOS系统中,文件权限第11位上是一个点的解读
			
------------------------------------------------------------------------------------------------- | ...
 - 【ORA】ora-39700解决
 - 开发中经常使用到的Xcode快捷键
			
工欲善其事必先利其器. 有了这些快捷键加持,你写代码不仅很6而且还很好看. 这些快捷键都是平时使用频率非常高的,今天整理出来分享给大家了. 左缩进:Cmd + [ 右缩进:Cmd + ] 代码格式化/ ...
 - DockerFile关键字相关作用以及解释
			
Dockerfile 关键字 作用 备注 FROM 指定父镜像 指定dockerfile基于那个image构建 MAINTAINER 作者信息 用来标明这个dockerfile谁写的 LABEL 标签 ...
 - 1.2V升3.3V芯片,大电流,应用MCU供电,3.3V稳压源
			
MCU供电一般是2.5V-5V之间等等都有,1.2V需要升到3.3V的升压芯片来稳压输出3.3V给MCU供电. 同时1.2V的输入电压低,说明供电端的能量也是属于低能量的,对于芯片自身供货是也要求高. ...
 - Linux中让终端输入变为非阻塞的三种方法
			
介绍 在linux下每打开一个终端,系统自动的就打开了三个文件,它们的文件描述符分别为0,1,2,功能分别是"标准输入"."标准输出"和"标准错误输出 ...
 - Android事件分发机制四:学了事件分发有什么用?
			
" 学了事件分发,影响我CV大法吗?" " 影响我陪女朋友的时间" " ..... " 前言 Android事件分发机制已经来到第四篇了,在 ...
 - Micro Frontends 微前端
			
Micro Frontends https://martinfowler.com/articles/micro-frontends.html Integration approaches Server ...
 - UVA11694 Gokigen Naname题解
			
目录 写在前面 Solution Code 写在前面 UVA的题需要自己读入一个 \(T\) 组数据,别被样例给迷惑了 Solution 每个格子只有两种填法且 \(n \le 7\),暴力搜索两种填 ...