luogu#P10917. 电王的传送迷宫
电王的传送迷宫
题目背景
电王天天玩传送门。
题目描述
给出一个大小为 的二维网格图。
网格上的 .
是可以通行的路径,#
是不能通行的障碍。
你每次可以走到一个与当前位置四连通的且不超过边界的点。
严格来说,若你当前在点 ,你可以走到 中的一个,并且保证在任意时刻你的坐标 应该满足 。
我们从起点 出发,你希望知道到达任意一个位置至少要走几步。
但这太简单了,于是精通传送门的电王在这个网格图上建造了 个传送门,它们的坐标分别为 。
而电王也设计了 个终点,它们的坐标分别为 。
假如你使用了 次传送门,当你到达任意一个传送门,你可以选择直接传送到点 。而第 次传送后,所有的传送门都会失效。
所以,传送到的位置只与你传送的次数有关,而与你到达了哪个传送门没有任何关系,我们可以认为所有传送门都是等价的。
保证 个传送门和 个终点的位置都不是障碍。
保证对于任意输入给出的坐标对应的位置上都是可以通行的路径,且这些坐标一定两两不同。
但电王有的时候并不想知道到去往任意点最少要移动几步,可能他只想知道到一个终点 的最少移动步数,我们会在输入格式中了解这个测试点电王的喜好(保证 不是一个障碍)。
输入格式
第一行输入一个正整数 。
第二行两个正整数 ,表示网格图的大小。
然后的 行,每行 个字符,用来描述这个网格的形态。
下一行若干个正整数,前四个数分别表示 ,若 ,我们还会额外输入两个数 ,表示电王只想知道从起点到 的最少移动步数。
接下来 行,每行两个正整数,分别表示 的值。
最后 行,每行两个正整数,分别表示 的值。
输出格式
若 ,输出一个 的数组矩阵。第 行 列的数表示从起点 到达 最少移动几步,如果不可能到达或者这个地方是一个障碍,输出 -1
。
否则输出一个数,表示从起点 到达 最少移动几步,如果不可能到达输出 -1
。
注意:使用传送门改变位置的操作,不算入移动的步数。
0
3 4
.#..
..#.
....
3 4 1 2
2 4
1 4
2 1
3 -1 2 1
2 3 -1 1
3 2 1 0
提示
样例解释:
我们以从起点 去往 为例:首先 ,然后使用传送门,第一次传送到 。然后 ,第二次使用传送门,到达点 ,最后 ,我们使用了两次传送门,行走了 步,所以这个路径方案的移动次数是 ,可以证明不存在比这更优的方案了。
本题采用捆绑测试。
分数 | 特殊性质 | ||
---|---|---|---|
无特殊限制 | |||
无特殊限制 | |||
无特殊限制 |
:保证 。
:保证网格中不存在不可通行的障碍 #
。
对于所有数据,满足 $1\le n,m\le 1000,0\le p,q\le n\times m,0 \leq opt \leq 1$。