#P9860. [CCC 2008 S3] Maze
[CCC 2008 S3] Maze
题目描述
In order to make a few dollars, you have decided to become part of a scientific experiment. You are fed lots of pizza, then more pizza and then you are asked to find your way across the city on a scooter powered only by pizza. Of course, the city has lots of intersections, and these intersections are very controlled. Some intersections are forbidden for you to enter; some only let you move north/south as you leave the intersection; others let you move only east/west as you leave the intersection; and the rest let you go in any compass direction (north, south, east or west).
Thankfully your scientific friends have given you a map of the city (on the back of a pizza box), with an arrangement of symbols indicating how you can move around the city. Specifically, there are 4 different symbols on the box:
-
The symbol
+
indicates we can move in any direction (north/south/east/west) from this location. -
The symbol
-
indicates we can move only east or west from this location. -
The symbol
|
indicates we can move only north or south from this location. -
The symbol
*
indicates we cannot occupy this location.
Your task is to determine how many intersections you must pass through to move from the northwest corner of the city to the south-east corner of the city.
输入格式
The input begins with a number on its own line, which indicates how many different cases are contained in this file. Each case begins with a number on one line, followed by a number on the next line . The next lines contain characters, where each character is
one of {+
, *
, -
, |
}. You may assume the north-west corner of the city can be occupied (i.e., it will not be marked with *
).
输出格式
The output will be lines long, with one integer per line. The integer on line indicates the minimum number of intersections required to pass through as you move from the north-west corner of the city to the south-east corner of the city. If there is no way to get from the north-west corner to the south-east corner, output for that test case.
3
2
2
-|
*+
3
5
+||*+
+++|+
**--+
2
3
+*+
+*+
3
7
-1