class Solution {
public:
// bfs适合距离为1的情形;
int n,m;
int maxAreaOfIsland(vector<vector<int>>& grid) {
int maxArea =0;
n=grid.size();
m=grid[0].size();
vector<vector<int>> vist;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]==1 ){
int t=bfs(grid,i,j);
maxArea=max(t,maxArea);
}
}
}
return maxArea;
}
int bfs(vector<vector<int>>& grid,int r,int c){
queue<pair<int,int>> q;
q.push({r,c});
grid[r][c]=0;
int size=1; //当前方格也算一个
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
while(q.size()){
auto t= q.front();
q.pop();
for(int i=0;i<4;i++){
int x=t.first+dx[i];
int y=t.second+dy[i];
if(x>=0 && x<n && y>=0 && y<m && grid[x][y]==1 ){
q.push({x,y});
size++;
grid[x][y]=0;
}
}
}
return size;
}
};