大家好,又见面了,我是你们的朋友全栈君。
在一个n×m 的方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。
输入格式
第一行输两个整数 n,m用空格隔开。
接下来 n 行,每行输入一个长度为 m 的,表示地图信息。0表示没有炸弹,1表示炸弹。
样例输入
5 5
00010
00010
01001
10001
01000
样例输出 :2
#include <stdio.h> #include <iostream> #include <math.h> #include <string.h> using namespace std; const double PI=acos(-1.0); int n,m; int ans; int a[105][105]; bool vx[105],vy[105]; void dfs(int x,int y){ a[x][y]=0; if(!vx[x]){
vx[x]=1; for(int i=0;i<m;i++){ if(a[x][i]==1){ dfs(x,i); } } } if(!vy[y]){
vx[y]=1; 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){ ans++; dfs(i,j); } } } cout<<ans; return 0; }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155191.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...