将原始网格中所有已铺设管道 'o' 按四方向(上、下、左、右)进行连通块划分,给每个已铺设管道网格分配一个组件编号,并记录每个组件的面积(格子数)。可用 BFS/DFS 完成,推荐 BFS 防止递归过深。
对于每一个格子:
'o',答案为 0(题意要求)。'x',把它视作改造为已铺设管道后,它会与其四邻中至多四个连通分支相连。取这些相邻组件编号的去重集合,把对应面积求和,再加上当前格子本身的 1,即为“将该位置改造为已铺设管道后,包含该位置的最大连通分支的大小”。这样即可一次预处理、一次扫描得到所有答案。
某市规划部门正在审查一个矩形区域的排水管网设计平面图。该区域被划分为 n×m 个网格单元,每个单元用两种状态标记:'o' 表示该网格已铺设排水管道,'x' 表示该网格尚未铺设管道。
在已铺设管道的网格中,如果两个网格在上下左右方向相邻,则它们属于同一个连通分支。连通分支的大小定义为其中包含的已铺设网格数量。
规划部门可以任意选择一个尚未铺设管道的网格,将其改造为已铺设状态。改造后,该网格可能将上下左右四个方向上的若干连通分支连接在一起,形成一个更大的连通分支。对于每一次改造,我们关心的是改造后包含该新铺设网格的连通分支的大小。
请你为每一个网格计算:若该网格初始已铺设管道,则结果为 0;若该网格初始未铺设管道,则结果为仅将该网格改造为已铺设后,包含该网格的连通分支的大小。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册