用DFS在2D地图上找连通分量的问题
例4 蓝桥杯——全球变暖
题目大意是有一张NxN像素的照片,图片中”#”代表陆地,”.”代表海洋。”上下左右”4连通连成一片的陆地组成一座岛屿。如下图题目里的照片中,有两座岛屿,分别用红框标记出来:
然后题目说由于全球变暖,海平面上升,预计岛屿边缘一个像素范围内的陆地都会被淹没。所谓岛屿边缘像素就是与海洋相邻的像素,也就是上下左右有海洋的像素
比如在上图中,红色的陆地都会被淹没。题目最后要求你计算预计有多少岛屿被全部淹没。在上图中,左上的岛屿被完全淹没了
这道题的基本思路比较直观,就是用DFS找出来所有#号组成的连通分量。同时计算每一个连通分量包含几个#号,以及包含几个与.点相邻的#号。其中找连通分量这一步是一个很常见的套路,很多题目都会用到。直接看完整的代码:
#include <iostream>
#include <S