题目:1159:Maze(OpenJudge - 1159:Maze)
翻译
Acm,一个寻宝者,正在再次探索。这次他是在一个特殊的迷宫,其中有一些门(最多5门,由“A”,' B ', ' C ', ' D ', ' E '分别表示)。为了找到宝藏,Acm需要打开大门。要打开一扇门,他需要先在迷宫中找到所有的钥匙(至少一个)。例如,如果有3把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”。
样例输入
4 4 S.X. a.X. ..XG .... 3 4 S.Xa .aXB b.AG 0 0
样例输出
YES NO