题目
思路
相比于 206、【图论】岛屿数量,就是在这个代码的基础上。先遍历边界,将边界连接的岛屿变为0,然后再计算一遍当前为1的岛屿面积。

代码实现
python
import collections
n, m = list(map(int, input().split()))
graph = []
for _ in range(n):
graph.append(list(map(int, input().split())))
directions = [[0, 1], [0, -1], [-1, 0], [1, 0]]
res = 0
def traversal(i, j):
que = collections.deque()
que.append([i, j])
graph[i][j] = 0
global res
res += 1
while que:
x, y = que.popleft()
for move_x, move_y in directions:
next_x, next_y = x + move_x, y + move_y
if next_x < 0 or next_x >= n or next_y < 0 or next_y >= m:
continue
elif graph[next_x][next_y] == 1:
res += 1
graph[next_x][next_y] = 0
que.append([next_x, next_y])
for i in range(n):
if graph[i][0] == 1:
traversal(i, 0)
if graph[i][m - 1] == 1:
traversal(i, m - 1)
for i in range(m):
if graph[0][i] == 1:
traversal(0, i)
if graph[n - 1][i] == 1:
traversal(n - 1, i)
res = 0
for i in range(n):
for j in range(m):
if graph[i][j] == 1:
traversal(i, j)
print(res)
参考文章:101. 孤岛的总面积