题目描述
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
define x first
define y second
using namespace std;
int m,n;
const int N=100;
bool st[N][N];
int a[N][N];
typedef pair[HTML_REMOVED]PII;
PII q[N*N];
int bfs(int i,int j){
int hh=0,tt=0;
int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};
q[0]={i,j};
st[i][j]=true;
int res=0;
while(hh<=tt){
auto t=q[hh];
res;
for(int c=0;c<4;c){
int x1=t.x+dx[c];
int y1=t.y+dy[c];
if(st[x1][y1]) continue;
if(x1<0||x1>=m||y1>=n||y1<0) continue;
if(a[t.x][t.y]>>c&1)continue;
q[tt]={x1,y1};
st[x1][y1]=true;
}
}
return res;
}
int main(){
cin>>m>>n;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
int area=0,cnt=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(!st[i][j]){
area=max(area,bfs(i,j));
cnt++;
}
}
}
cout<<cnt<<endl;
cout<<area<<endl;
}
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla