编程题
### 问题描述
有一个 $N$ 行 $M$ 列的二进制矩阵,其中 `0` 表示白色单元格,`1` 表示黑色单元格。白色单元格之间如果在上下左右相邻,则认为是连通的。矩阵保证最初只有一个连通的白色区域,并且这个区域至少有一个单元格在矩阵的边界上。
你可以将恰好一个白色单元格变为黑色。这样做可能会使原来的白色区域分裂成多个区域。在这之后,所有没有单元格在矩阵边界上的白色区域都会变成黑色。你的目标是通过这种方式最大化黑色单元格的总数。
### 输入格式
第一行包含两个整数 $N$ 和 $M$。
接下来的 $N$ 行每行包含 $M$ 个二进制数,代表矩阵的单元格。
### 输出格式
输出一个整数,代表变色一个白色单元格后矩阵中黑色单元格的最大可能数量。
### 样例输入
```
3 3
0 1 1
0 0 1
0 1 1
```
### 样例输出
```
7
```
### 评测数据规模
- $1 \leq N, M \leq 1000$