题目来源:OpenJudge - 1159:Maze
翻译如下:
描述:宝藏探险家Acm再次开始探索。这次他在一个特殊的迷宫中,其中有一些门(最多5扇门,分别由"A","B","C","D","E"表示)。为了找到宝藏,Acm可能需要打开门。但是,要打开一扇门,他需要先在迷宫中找到所有门的钥匙(至少一把)。例如,如果门A有3把钥匙,要打开门,他应该首先找到所有3把钥匙(即三个"a",表示迷宫中"A"的钥匙)。现在做一个程序来告诉Acm他是否能找到宝藏。请注意,Acm只能在迷宫中向上,向下,向左和向右移动。
输入:输入由多个测试用例组成。每个测试用例的第一行包含两个整数 M 和 N(1 < N、M < 20),表示迷宫的大小。接下来的M行给出了迷宫布局,每行包含N个字符。字符是以下字符之一:"X"(一块墙,资源管理器无法进入),"."(一个空块),"S"(Acm的起点),"G"(宝藏的位置),"A","B","C","D","E"(门),"a","b","c","d","e"(门的钥匙)。输入以两个 0 终止。不应处理此测试用例。
输出:对于每个测试用例,如果Acm可以找到宝藏,则在一行中输出"YES",否则输出"NO"。