绝对原创,如有雷同,纯属巧合(这是我最懒的一回)
#include<iostream>
using namespace std;
int front,rear,r,c,q[4100][3],ans=0,MAX=0,dr[4]={1,-1,0,0},dc[4]={0,0,1,-1};
char a[210][210];
void bfs();
int main(){
cin>>r>>c;
int i,j;
for(i=1;i<=r;i++)
for(j=1;j<=c;j++)
cin>>a[i][j];
for(i=1;i<=r;i++)
{
for(j=1;j<=c;j++)
{
if(a[i][j]!='0')
{
ans++;
front=0;rear=1;
q[1][0]=i;q[1][1]=j; //将当前(不为0)的坐标放入队列1号位
a[i][j]='0'; //将当前位置标0,然后进入宽搜
bfs();
if(rear>MAX)MAX=rear; //rear最大值就是最大的岛屿大小
}
}
}
cout<<ans;//<<" "<<MAX;
return 0;
}
void bfs(){
int i,j;
while(front<rear)
{
front+