A Mayor Problem
Time Limit: 1 Second Memory Limit: 32768 KB
Your company has recently been awarded the contract to keep the town streets
painted. A proper job will take you two months to finish, but elections are
coming soon and the Mayor wants it done sooner. The Mayor called your company's
director; the company's director called your boss; and your boss called you.
Due to a lack of underlings to delegate to, this is now your problem.
You have quickly acquired some knowledge of the Mayor's daily activities by
buying a supermarket tabloid. The newspaper tells you that the Mayor is an efficiency
freak that refuses to travel any route between his starting point and his destination
that is not of minimum length (note that there can be more than one path of
minimum length,) and it provides a list of every place in town he visits. However,
it fails to inform you of the order in which he visits these places.
You quickly decide that the best solution is to paint every bit of road the
Mayor can see, in the hopes that he will think you are done early. This subterfuge
will buy you extra time to finish the job in the rest of the town.
Given a map of the city grid and a list of the places the Mayor visits; return
the number of city blocks you need to paint (A "street block" is a
subpart of a street, delimited between two grid points). Assume that the Mayor
can only see blocks he travels on. For the sake of simplicity, the Mayor will
only travel between street corners. All city blocks are of the same length.
Input
The input begins with the number of test cases it contains. After that, the
test cases appear one after the other, each preceded by a line of white space.
The input file will always end with an end-of-line (EOL).
Each test case contains the city grid, followed by an integer specifying the
number of locations the Mayor can visit, followed by the locations in row-column
order (zero based, the origin being the northwest corner of town). The city
grid is described by two lines of text, each at least 2 and at most 10 characters
long. The first line contains the directions of the East-West streets (E, W,
or T for two-way). The second line contains the directions of the North-South
streets (N, S, or T). Every location specified will be valid for the provided
street grid.
Output
The output begins with a case number (starting at one) followed by a line stating how many blocks are required to be painted. Print a blank line after every output case (this means the output will have two newlines at the end before the end-of-file).
Sample Input
2 EE SS 2 0 0 1 1 EW TT 2 0 0 1 1
Sample Output
Case #1: 4 street blocks need to be painted. Case #2: 4 street blocks need to be painted.Submit
Source: Asia 2003, Tehran (Iran), Preliminary