#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]; //行 列 //1 1 //1 2 //1 3 //1 4 //1 5 //2 5 //3 5 //4 5 //4 4 // void dfs(int hang,int lie){//给我一个行和列 如果我身边还有0 我就继续影响他 // cout<<hang<<" "<<lie<<endl; for(int i=0;i<=3;i++){ int tx=hang+fx[i]; int ty=lie+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++){ //cout<<a[i][j]<<" "; if(a[i][j]=='0') ans++; } //out<<endl; } cout<<ans; } /************************************************************** Problem: 1913 User: admin Language: C++ Result: Wrong Answer ****************************************************************/