#include #include using namespace std;int R,C; //行列数int rooms[60][60];int color[60][60]; //方块是否被标记过int maxRoomArea=0,roomNum=0;int roomArea;void DFS(int i,int j){ if(color[i][j]) //该点已经被访问过 return; roomArea++; color[i][j]=roomNum; //标记该点为已访问过 if((rooms[i][j] & 1)==0) DFS(i,j-1); //西面没有墙,向west走 if((rooms[i][j] & 2)==0) DFS(i-1,j); //北面没有墙,向north走 if((rooms[i][j] & 4)==0) DFS(i,j+1); //东面没有墙,向east走 if((rooms[i][j] & 8)==0) DFS(i+1,j); //南面没有墙,向south走}int main(){ cin>>R>>C; for(int i=1; i<=R; i++) for(int j=1; j<=C; j++) cin>>rooms[i][j]; memset(color,0,sizeof(color)); for(int i=1; i<=R; i++) for(int j=1; j<=C; j++) { if(color[i][j]==0) { roomArea=0; roomNum++; DFS(i,j); maxRoomArea=max(roomArea,maxRoomArea); } } cout< <