#include<bits/stdc++.h>
using namespace std;
char a[600][600];
void bfs(int x,int y) {
    if(a[x][y]=='0'){
        a[x][y]='*';
        bfs(x-1,y);
        bfs(x+1,y);
        bfs(x,y+1);
        bfs(x,y-1);
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int x, y;
    cin >> x >> y;
    int sum=0;
    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++){
        bfs(i,1);
        bfs(i,y);
    }
    for(int j=1;j<=y;j++){
        bfs(1,j);
        bfs(x,j);
    }
    for (int i = 1; i <= x; i++) {
        for (int j = 1; j <= y; j++) {
            if(a[i][j]=='0'){
                sum+=1;
            }
        }
    }
    cout<<sum;
    return 0;
}

看了视频讲解,完美perfect