#include<bits/stdc++.h> using namespace std; int x,y,ans; int fx[4]={0,1,0,-1}; int fy[4]={1,0,-1,0}; char a[501][501]; void dfs(int hang,int lie){//给我一个行和列 如果我身边还有0 我就继续影响他 for(int i=0;i<=3;i++){ int tx=x+fx[i]; int ty=y+fy[i]; if(tx>=1&&tx<=x&&ty>=1&&ty<=y&&a[tx][ty]=='0'){ a[tx][ty]='*'; dfs(tx,ty); } } } int main(){ cin>>x>>y; for(int i=1;i<=x;i++) for(int j=1;j<=y;j++) cin>>a[i][j]; for(int i=1;i<=x;i++){ for(int j=1;j<=y;j++){ if((i==1||i==x||j==1||j==y)&&a[i][j]=='0'){ a[i][j]='*'; dfs(i,j); } } } for(int i=1;i<=x;i++){ for(int j=1;j<=y;j++){ if(a[i][j]=='0') ans++; } } cout<<ans; } /************************************************************** Problem: 1913 User: admin Language: C++ Result: Wrong Answer ****************************************************************/