207图论孤岛的总面积
207、【图论】孤岛的总面积
题目
思路
相比于
,就是在这个代码的基础上。先遍历边界,将边界连接的岛屿变为0,然后再计算一遍当前为1的岛屿面积。
代码实现
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) 参考文章: