测试点三: 输入就是样例,我的输出是5
上代码
#include<iostream>
#include<queue>
using namespace std;
queue<int> us;
int z[8]={1,0,0,-1,0,1,-1,0};
int a,l;
bool b[102][102];
int s=0;
void bfs(){
while(!us.empty()){
int l2=us.front()/200,s2=us.front()%200;
b[l2][s2]=0;
for(int i=0;i<3;i++){
l2+=z[i];
s2+=z[i+4];
if(b[l2][s2]){
us.push(l2*200+s2);
}
l2-=z[i];
s2-=z[i+4];
}
us.pop();
}
s++;
}
int main(){
cin>>a>>l;
char ll='a';
for(int i=1;i<=a;i++){
for(int j=1;j<=l;j++){
cin>>ll;
if(ll>'0'){
b[i][j]=1;
}
}
}
for(int i=1;i<=a;i++){
for(int j=1;j<=l;j++){
if(b[i][j]==1){
us.push(i*200+j);
bfs();
}
}
}
cout<<s;
}