#P1103. Maze

    ID: 104 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>搜索DFSMid-Central European Regional Contest 1999

Maze

描述

通过用斜杠(/)和反斜杠(\)填充一个矩形,你能够生成漂亮的小迷宫。下面是一个例子:

如你所见,迷宫中的路径不会分叉,所以整个迷宫只包含环形路径以及从某处进入并从另一处离开的路径。我们只对环形路径感兴趣。在我们的例子中,有两条环形路径。 你的任务是编写一个程序,统计环形路径的数量,并找出最长环形路径的长度。长度被定义为环形路径所包含的小方格的数量(就是图中由灰色线条框起来的那些小方格)。在这个例子中,长的环形路径长度为$16$,短的环形路径长度为$4$。

输入

输入包含若干个迷宫描述。每个描述的第一行包含两个整数 wwhh1w,h751 \leq w,h \leq 75),表示迷宫的宽度和高度。接下来的 hh 行表示迷宫本身,每行包含 ww 个字符;所有这些字符要么是“/”,要么是“\”。 输入格式为:第一行是两个整数 wwhh1w,h751 \leq w,h \leq 75);接下来 hh 行,每行 ww 个字符,字符只能为“/”或“\”。输入以一个 w=h=0w = h = 0 的测试用例结束,该用例不应被处理。

输出

对于每个迷宫,首先输出一行“Maze #nn:”,其中 nn 是迷宫的编号。然后,若迷宫包含循环,输出“kk Cycles; the longest has length ll.”,其中 kk 是循环数量,ll 是最长循环的长度;若迷宫不包含任何循环,输出“There are no cycles.”。 输出格式为:先输出 “Maze #nn:”(nn 为迷宫编号);根据循环情况,有循环时输出 “kk Cycles; the longest has length ll.”,无循环时输出 “There are no cycles.”;每个测试用例后需输出一个空行。

输入示例

6 4
\//\\/
\///\/
//\\/\
\/\///
3 3
///
\//
\\\
0 0

输出示例

Maze #1:
2 Cycles; the longest has length 16.

Maze #2:
There are no cycles.

来源

1999年中欧地区编程竞赛