[ABC358] F - Easiest Maze
F - Easiest Maze
Time Limit: 2 sec / Memory Limit: 1024 MB
分数: 525 分
题面
Snuke 打算在 AtCoder Land 建造一个迷宫作为新的景点。迷宫表示为一个
他喜欢简单的迷宫,所以他希望从入口到出口的路径通过正好
例如,在下图中,

下面是一个正式的陈述。
有一个
确定是否可能放置墙壁以满足以下条件,并且如果可能,构建一个这样的放置墙壁。
考虑一个无向图
,具有 个顶点。 的每个顶点都由一对整数 唯一标识。当且仅当网格上对应单元格 和 之间有一堵墙时,才连接 的两个不同顶点 和 。 条件:存在一条包含
个顶点的简单路径连接顶点 和 ,且包含顶点 和 的连通分量仅包含该路径。
限制条件
- 所有输入值均为整数。
输入
输入以以下格式从标准输入给出:
输出
如果没有满足条件的墙壁放置方式,则打印 No。否则,以以下格式打印其中一个有效的放置方式。
查看下面的示例输出了解复杂的输出格式。
Yes
+++++
+o?o?
+?+?+
+o?o?
+?+?+
+o?o?
+?+?+
+o?o?
+++++
这里,S,G,+ 和 o 分别表示入口、出口、墙壁和单元格,两个水平相邻单元格之间的 ? 表示可以放置墙壁的位置。如果放置了墙壁,将 ? 替换为 |;如果未放置墙壁,则替换为 .。两个垂直相邻单元格之间的 ? ,如果放置了墙壁,则用 - 替换;否则用 . 替换。
下面是一个正式指导。
- 输出应包括
行。第 行应包含字符串 Yes,第行到第 行应包含长度为 的字符串,具体描述如下。 - 第
行应由 +重复次、 S和+依此排列组成。 - 第
行 ( ) 应由 +、o、、 o、、 、 、 o、+依此排列组成。这里,如果在单元格和 之间放置了墙壁,则 为 |;否则为.。 - 第
行 ( ) 应由 +、、 o、、 o、、 o、、 +依此排列组成。这里,如果在单元格和 之间放置了墙壁,则 为 -;否则为.。 - 第
行应由 +、G和+重复次、依此排列组成。
- 第
输入样例 1
3 3 7
输出样例 1
Yes
+++++S+
+o.o.o+
+.+-+-+
+o.o.o+
+-+-+.+
+o.o|o+
+++++G+
这是题面中图中所示的墙壁放置方式。
输入样例 2
3 3 2
输出样例 2
No
输入样例 3
4 1 4
输出样例 3
Yes
+S+
+o+
+.+
+o+
+.+
+o+
+.+
+o+
+G+