bzoj#P1326. [ZJU1361] Holedox Moving

[ZJU1361] Holedox Moving

题目描述

有一条蛇在它的洞里面,现在他要出来,问最少要多少步才可以移动到出口。出口的位置是 (1, 1)(1,\ 1)。蛇可以弯曲的,但是它的部分必须是连接的,比如:如果它有一个部位在一个坐标,连接它那个部位的坐标一定是它的上下左右。

输入格式

本题有多组数据。

每组数据的第一行有三个数 N, M, LN,\ M,\ LN, MN,\ M 表示洞的大小 N×MN\times MLL 表示蛇的长度。

接下来 LL 行,每行两个数,表示蛇所有部位的位置。第一组是蛇的头,第 LL 组是蛇的尾巴,也就是说是按顺序给出蛇的头至尾的位置,移动时蛇的蛇的后面一个部位要移到之前那个部位的位置。当然蛇不能走到有石头的地方且它不能走在自己身上。

然后给出一个 KK,表示洞里面有多少块石头。然后下面有 KK 行,每行两个数,表示每块石头的坐标。 每个数据之间有一空行,数据以三个 00 表示结束。

输出格式

如果蛇可以走出洞的话,那么输出最小步数,如果蛇不能走出洞,那么输出 -1

5 6 4
4 1
4 2
3 2
3 1
3
2 3
3 3
3 4
4 4 4
2 3
1 3
1 4
2 4
4
2 1
2 2
3 4
4 2
0 0 0
Case 1: 9
Case 2: -1

样例解释

注意出口处是没有石头的。

第一组数据依次按以下坐标走是最短的:$(4,1)\ (5,1)\ (5,2)\ (5,3)\ (4,3)\ (4,2)\ (4,1)\ (3,1)\ (2,1)\ (1,1)$。