#S5. 「JOISC 2014 Day2」水壶
「JOISC 2014 Day2」水壶
题目描述
题目译自 JOISC 2014 Day2 T1「水筒」
JOI 君所居住的 IOI 市以一年四季都十分炎热著称。
IOI 市被分成  行,每行包含  块区域。每个区域都是建筑物、原野、墙壁之一。
IOI 市有  个区域是建筑物,坐标分别为    。
JOI 君只能进入建筑物与原野,而且每次只能走到相邻的区域中,且不能移动到市外。
JOI 君因为各种各样的事情,必须在各个建筑物之间往返。虽然建筑物中的冷气设备非常好,但原野上太阳非常毒辣,因此在原野上每走过一个区域都需要 1 升水。此外,原野上没有诸如自动售货机、饮水处之类的东西,因此 IOI 市的市民一般都携带水壶出行。大小为  的水壶最多可以装  升水,建筑物里有自来水可以将水壶装满。
由于携带大水壶是一件很困难的事情,因此 JOI 君决定携带尽量小的水壶移动。因此,为了随时能在建筑物之间移动,请你帮他写一个程序来计算最少需要多大的水壶。
现在给出 IOI 市的地图和 个询问,第 个询问包含两个整数 ,对于每个询问,请输出:要从建筑物 移动到 ,至少需要多大的水壶?
输入格式
第一行四个空格分隔的整数 。
接下来  行,第  行有一个长度为  的字符串,每个字符都是 . 或 # 之一,. 表示这个位置是建筑物或原野,# 表示这个位置是墙壁。
接下来  行描述 IOI 市每个建筑物的位置,第  行有两个空格分隔的整数  和 ,表示第  个建筑物的位置在第  行第  列。保证这个位置在地图中是 .。
接下来  行,第  行有两个空格分隔的整数  。
输出格式
输出  行,第  行一个整数,表示要从建筑物  移动到 ,至少需要多大的水壶。
如果无法到达,输出 -1。如果不需要经过原野就能到达,输出 0。
5 5 4 4
.....
..##.
.#...
..#..
.....
1 1
4 2
3 3
2 5
1 2
2 4
1 3
3 4
3
4
4
2
5 5 3 2
...#.
..#..
#....
.##..
...#.
1 3
5 2
1 5
1 2
1 3
-1
7
数据范围与提示
对于所有数据, , 。
| 子任务编号 | 分值 | 附加条件 | 
|---|---|---|
| 1 | 10 | |
| 2 | 30 | |
| 3 | ||
| 4 |