P14098 [POCamp 2022] 狼抓兔子 II / Djur

题目描述

在一个有 $R \times C$ 的网格中,狼站在格子 $(1, 1)$,兔子站在格子 $(R, C)$。狼想走到格子 $(R, C)$,兔子想走到格子 $(1, 1)$。不过有一个问题:如果两条路径彼此相交,狼就会沿着兔子的路径去追它。现在我们想知道:给定网格的样子,能否为兔子和狼各找到一条不相交的路径?起点与终点格子($(1, 1)$ 和 $(R, C)$)不计入路径。

输入格式

第一行包含两个整数:$R, C$。在所有测试中,满足 $2 \le R \cdot C \le 2 \cdot 10^5$。 接下来给出一个 $R \times C$ 的网格。每个格子要么是 `.`,表示空格子;要么是 `#`,表示障碍。 保证格子 $(1, 1)$ 和 $(R, C)$ 是空的。

输出格式

如果不存在两条满足要求的路径,输出 `NO`。 否则输出一行 `YES`。然后输出一个网格,其中用 `K` 标记兔子的路径,用 `V` 标记狼的路径。注意,所有障碍在输出时必须仍为障碍,所有不在路径上的空格子必须仍为空格子。每一条路径必须是连通的。 如果你使用 `C++`,为避免在正确解上出现 `Time Limit Exceeded`,建议使用 `\n` 而不是 `endl`。

说明/提示

### 子任务 **本题采用捆绑测试。** | 子任务编号 | 得分 | 限制 | |:-:|:-:|---| | 1 | 9 | 没有障碍 | | 2 | 10 | $R \cdot C \le 10$ | | 3 | 20 | $R = 3$ | | 4 | 25 | $R \cdot C \le 1000$,并且保证存在一种解,其中狼只向下与向右移动,兔子只向上与向左移动 | | 5 | 36 | 无额外限制 |