#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
int R,C;
int rooms[60][60];
int color[60][60];
int maxRoom=0,roomNum=0;
int roomArea;
void dfs(int i,int k)
{
if(color[i][k])
return ;
++roomArea;
color[i][k]=roomNum;
if(rooms[i][k]&1==0) dfs(i,k-1);
if(rooms[i][k]&2==0) dfs(i-1,k);
if(rooms[i][k]&4==0) dfs(i,k+1);
if(rooms[i][k]&8==0) dfs(i+1,k);
}
int main()
{
int i,j;
cin>>R>>C;
for(i=0; i<R; i++)
for(j=0; j<C; j++)
cin>>rooms[i][j];
memset(color,0,sizeof(color));
for(i=0; i<R; i++)
for(j=0; j<C; j++)
{
if(!color[i][j])
{
++roomNum;
roomArea=0;
dfs(i,j);
maxRoom=max(roomArea,maxRoom);
}
}
cout<<roomNum<<endl;
cout<<maxRoom<<endl;
}
在coursera上看了视频,后悔没让前男友教我深搜