实验任务
小\(X\)同学最近玩起了复古的神奇宝贝游戏。游戏地图为一个\(n\times m\)的方格组成,地图中有如下一些表示:
T: 该方格被树木占据,不可穿过;
S: 小\(X\)同学的起始位置,保证图中只包含一个 S;
E: 地图的出口,保证图中只包含一个 E;
0~9: 表示地图该位置存在\(i\)个其它玩家。
游戏规则如下:每次操作所有玩家可以不行动或行动到相邻的可移动方格中。若小\(X\)与其他玩家在同一方格相遇,他就需要与该方格内所有其他玩家分别完成一次决斗。由于小\(X\)在这个服务器很出名,其他玩家都会尽一切可能遇上他并进行决斗。当小\(X\)走到地图出口时结束游戏(若在出口处相遇,仍需进行完决斗后出地图)。小\(X\)想知道他最少需要参加多少次决斗。
数据输入
输入的第一行为包括两个整数\(n\),\(m\ (1\leq n,m\leq 1000)\)表示地图的大小。接下来\(n\)行,每行\(m\)个字符表示地图,包含字符如题所述。
数据输出
输出一个整数表示小 X 同学在游戏中需要参加的最少决斗次数。
输入示例 | 输出示例 |
---|---|
5 7 000E0T3 T0TT0T0 010T0T0 2T0T0T0 0T0S000 |
3 |
1 4 SE23 |
2 |
源代码
1 |
|
设计思路与复杂度分析
找到小x的最短路长度,小x一定要走最短路才遭遇最少玩家。因为,如果最短路上能遭遇的玩家,你打算不走最短路去避开他,那么他是可以直接去终点等着你的!然后再考虑逆向思维,所有玩家从终点出发,在小x之前或同时到达自己位置的需要与小x决斗。最终归结为电路布线问题,详细请参考教材。