A1139-引爆炸弹 计蒜客 bfs剪枝
题目链接 https://nanti.jisuanke.com/t/A1139
在一个 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
思路:我开始认为是简单的bfs,便开始用bfs实现,但是很明显在第8个样例时卡住了我想如果是1000*1000个点都是1就要重复遍历1e9这样就会超时,所以对于每一次遍历过的边标记一次下一次就不用再次标记
代码如下
- #include<bits/stdc++.h>
- using namespace std;
- int a[][];
- int m,n,ans=;
- int bow[];
- int col[];
- int bfs(int i,int j)
- {
- a[i][j]=;
- if(!bow[j])
- {
- bow[j]=;
- for(int k=;k<=n;k++)
- {
- if(a[k][j]==)
- bfs(k,j);
- }
- }
- if(!col[i])
- {
- col[i]=;
- for(int l=;l<=m;l++)
- {
- if(a[i][l]==)
- bfs(i,l);
- }
- }
- }
- int main()
- {
- scanf("%d %d",&n,&m);
- for(int i=;i<=n;i++)
- {
- for(int j=;j<=m;j++)
- {
- scanf("%1d",&a[i][j]);
- }
- }
- for(int i=;i<=n;i++ )
- {
- for(int j=;j<=m;j++)
- {
- if(a[i][j]==)
- {
- bfs(i,j);
- ans++;
- }
- }
- }
- printf("%d",ans);
- }
A1139-引爆炸弹 计蒜客 bfs剪枝的更多相关文章
- 计蒜客 等边三角形 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/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】
Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
- 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)
https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...
随机推荐
- 绑定与非绑定方法及反射,isinstance和issubclass内置函数
目录 绑定方法与非绑定方法 1.绑定方法 2.非绑定方法(staticmethod) isinstance和issubclass 内置函数 1.isinstance 2.issubclass 反射(面 ...
- 【JZOJ5180】【NOI2017模拟6.29】呵呵
题目 分析 套上prufer序列, 对于一颗n个节点度数分别为\(d_1.d_2...d_n\)方案数为\(\dfrac{(n-2)!}{(d_1-1)!(d_2-1)!......(d_n-1)!} ...
- el-input和和filter结合实现实时搜索
<el-input placeholder="请选择日期" clearable prefix-icon="el-icon-search" v-model= ...
- create-react-app创建,ie11不兼容
按照官方文档使用yarn create react-app centre-app 创建工程,使用yarn start, chrome浏览器可正常访问 但在ie11下报如下图错误 解决方案如下: 1. ...
- C++入门经典-例2.14-使用移位运算
1:代码如下: // 2.14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- 第六周&实验四
二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造方法,将半径置0 Cir ...
- js中数组的经典特性
数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长 ...
- 【git】本地git bash连接远程库github
重要参考: https://www.liaoxuefeng.com/wiki/896043488029600 https://segmentfault.com/a/1190000003728094 正 ...
- redis哨兵集群搭建
下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...
- android 播放音乐媒体文件(三)
看段小代码: mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mMediaPlayer.setDataSource(url);mM ...