抽象DFS:引爆炸弹

简介: 抽象DFS:引爆炸弹

在一个 n × m n×mn×m 的方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,

炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。

现在为了引爆地图上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把地图上的所有炸弹引爆。

输入格式


第一行输两个整数 n , m 。n,m用空格隔开。


接下来 n 行,每行输入一个长度为 m 的字符串,表示地图信息。0表示没有炸弹,1表示炸弹。


数据约定:


对于 60 %  的数据:1 ≤ n , m ≤ 100 1≤n;


对于 100 % 的数据:1 ≤ n , m ≤ 1000 ;


输出格式


输出一个整数,表示最少需要手动引爆的炸弹数。


输入样例:


5 5
00010
00010
01001
10001
01000

输出样例:

2
#include <iostream>
using namespace std;
int n,m;
char a[1005][1005];
bool vx[1005],vy[1005];
int number;
void dfs(int x,int y){   //x行y列 
  a[x][y]='0';
  if(!vx[x]){        //重复性剪枝
    vx[x]=true;
    for(int i=0;i<m;i++){
    if(a[x][i]=='1'){
      dfs(x,i);
    }
  }
  }    
  if(!vy[y]){           //重复性剪枝
    vy[y]=true;
    for(int i=0;i<n;i++){
    if(a[i][y]=='1'){
      dfs(i,y);
    }
  }
  }
}
int main(){
  cin>>n>>m;
  for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
      cin>>a[i][j];
    }
  }
  for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
      if(a[i][j]=='1'){
        number++;
        dfs(i,j);
      }
    }
  }
  cout<<number;
  return 0;
} 
相关文章
|
4月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
75 0
|
4月前
【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟
【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟
33 0
|
10月前
|
算法
单源最短路的拓展应用
单源最短路的拓展应用
60 0
|
4月前
|
算法
【错题集-编程题】腐烂的苹果(多源 BFS + 最短路)
【错题集-编程题】腐烂的苹果(多源 BFS + 最短路)
|
2月前
|
存储 定位技术
【天梯赛】L2-048 寻宝图 (DFS做法)
遇到一个非'0'字符(也就是'1'和 宝藏'2'到'9')就让ans++,同时将这个非'0'字符染色为'0',然后往四个方向(上、下、左、右)搜索,这里的目的是那一片岛屿(也就是那一片为'1'的部分)都染色为‘0’。本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿。为了判断有宝藏的岛屿,这里我开了一个全局变量f来判断这一片岛屿是否有宝藏(也就是有无字符'2'-'9'),当搜到字符'2'~'9'时就将f标记为1。在一行中输出 2 个整数,分别是岛屿的总数量和有宝藏的岛屿的数量。
27 5
|
3月前
[NOIP2002]过河卒 标准递归
[NOIP2002]过河卒 标准递归
31 6
|
4月前
|
存储 人工智能
贪心,DFS:小美的树上染色
贪心,DFS:小美的树上染色
44 1
|
算法 编译器 C++
<<算法很美>>——(七)——DFS典题(二):数独游戏
<<算法很美>>——(七)——DFS典题(二):数独游戏
<<算法很美>>——(七)——DFS典题(二):数独游戏
<<算法很美>>——(七)——DFS典题(一):水洼数目
<<算法很美>>——(七)——DFS典题(一):水洼数目
<<算法很美>>——(七)——DFS典题(一):水洼数目
|
算法 C++
蓝桥杯试题 算法训练 绘制地图 C/C++解法 AC(最近,WYF正准备参观他的点卡工厂。WYF集团的经理氰垃圾需要帮助WYF设计参“观”路线。现在,氰垃圾知道一下几件事情。。。。)
蓝桥杯试题 算法训练 绘制地图 C/C++解法 AC(最近,WYF正准备参观他的点卡工厂。WYF集团的经理氰垃圾需要帮助WYF设计参“观”路线。现在,氰垃圾知道一下几件事情。。。。)
98 0