CF1749E Cactus Wall
题目描述
为了抵御怪物的袭击,Monocarp 决定利用他的院子构建一座仙人掌屏障。院子可以看作 $n$ 行 $m$ 列的网格,每个格子内最多可以种一颗仙人掌。
怪物可以从第一行任意一个没有仙人掌的格子进入院子,它每次能走到一个**四联通相邻**(即两个格子有公共边)且没有仙人掌的格子。如果怪物怎么走都无法到达最后一行的某个没有仙人掌的格子,那么院子里就成功构建了一座屏障。
但如果仙人掌种植过密,就可能因为缺乏养分凋零而失去作用,因此**任意两个四联通相邻的格子不能同时种上仙人掌**。
现在可能有些格子已经种上了仙人掌。Monocarp 想要知道在**不铲除已有仙人掌**的前提下,至少要再种多少颗仙人掌才能构成一座屏障。
输入格式
第一行一个整数 $t$,数据组数。
对于每组数据,第一行两个数 $n$,$m$,院子的大小。接下来是 $n$ 行 $m$ 列的字符矩阵,`#` 表示这个格子已经有仙人掌,`.` 表示没有仙人掌。
输出格式
对于每组数据,如果无法建成屏障,输出一行 `NO`。
否则先输出一行 `YES`,再输出 $n$ 行 $m$ 列的字符矩阵,表示任意一组建成屏障的最优解,格式同输入。
说明/提示
$1\leq t\leq 10^3$,$2\leq n,m\leq 2\times10^5$,$\sum nm\leq 4\times10^5$