#include<bits/stdc++.h>
#define MAXN (int)(5e2+1e1)
using namespace std;
int n,m,mv[MAXN][MAXN]={{},{0,1,-1,0,0},{0,0,0,1,-1}},cnt;
char x[MAXN][MAXN];
struct node{
int x,y;
node(int a,int b){x=a;y=b;}
};
void bfs(int x,int y){//洪水填充
queue<node> q;
q.push(node(x,y));
while(!q.empty()){
for(int i=1;i<=n;i++){
if(x[q.front().x+mv[i][1]][q.front().y+mv[i][2]]=='0'){
x[q.front().x+mv[i][1]][q.front().y+mv[i][2]]='*';
q.push(node(q.front().x+mv[i][1],q.front().y+mv[i][2]));
}
}
q.pop();
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) cin>>x[i][j];
}
for(int i=1;i<=n;i++) if(x[i][1]!='*') bfs(i,1);
for(int i=1;i<=n;i++) if(x[i][m]!='*') bfs(i,m);
for(int i=1;i<=m;i++) if(x[1][i]!='*') bfs(1,i);
for(int i=1;i<=m;i++) if(x[n][i]!='*') bfs(n,i);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) if(x[i][j]=='0') cnt++;
}
cout<<cnt<<endl;
return 0;
}
//O(n^3)
编译信息:
15 29 C:\Users\s01\Documents\未命名2.cpp [Error] invalid types 'int[int]' for array subscript
16 27 C:\Users\s01\Documents\未命名2.cpp [Error] invalid types 'int[int]' for array subscript
但是 x 和 mv 都是二维数组,也没看到我写了int[int] 啊。。。