2931: 逃离密室
题目描述
skj居然单身去玩真人版逃离密室,其实本人也去了。关于密室的规则我可以简单介绍一下: 开始你被请到某个阴暗的小房间,然后通过搜集线索而不是胡乱单击或双击通过一个又一个房间,最终到达出口。天无绝人之路,在找不到线索的时候可以使用提示牌(当然不是点击使用了,是用对讲机和管理员联系,拿提示牌换取提示),会有人莫名其妙钻出来给你提示。当然提示牌作为一种道具,也不是那么好拿的。 因为要出题目,我还是改变一下模型吧,假如skj去玩密室,首先会被安排在某一个角落,然后他就可以到处走。一些房间没有特别的地方,一些房间需要解谜一次。如果遇到了需要解谜的房间,由于缺乏某种buf,skj必然要使用一次提示,机智的skj能在提示中豁然开朗,完成解谜。 一个房间的谜一旦被解开就可以和正常的房间一样出入自由了。当然了,会有奇怪的提示牌散落在密室中,但是每个房间最多都只有一个提示牌,且不会放在要解谜的房间内,并且skj总能瞬间敏锐地发现提示牌并拿走,每次提示都需要交出一张提示牌。 由于时间非常有限,只有60min,所以skj需要精心安排,况且进入密室以后一切通讯工具都会被没收。无意间你得到了一张地图,所以由你来策划怎样安排行程可以使经过的房间次数(包括第一个和最后一个房间)最少。
输入
第一行输入两个数N,M表示地图大小,有N*M个房间。 接下来N行,每行M个字符表示这张地图,’B’表示起点,’E’表示终点,’#’表示墙,’.’表示空房间,’!’表示有提示牌的空房间,’?’表示需要解谜的房间。
输出
如果可以逃出密室则输出最少需要经过的房间数,否则输出impossible
样例输入 复制
3 5
B!??E
#?#!#
#..!#
样例输出 复制
9
提示
【温馨提示】 所有数据均为手出,数据比较弱 【数据规模】 对于30%的数据N,M<=4 对于70%的数据N,M<=7 额外20%的数据中’?’的个数<=5 对于100%的数据2<=N,M<=10