Submit | All submissions | Best solutions | Back to list |
RDNWK - Road Network |
In a country of N cities, the government would like to develop a new system that can answer drivers’ queries to find the shortest path between 2 cities in the country road network. However, some cities are more exciting than others, and drivers would prefer driving through them. Last month, a voting for the most exciting cities in the country was conducted, and a ranking of the P most exciting cities has been made. The government decided to utilize this ranking so that drivers can find the shortest path between 2 cities that only goes through the first K cities of the ranking as intermediate cites on the road. Hence, the query is defined as: the source city, the destination city, and K for the first K cities from the ranking. (Note that some cities may not be exciting at all, and so they will not be included in the ranking, i.e. P ≤ N)
Given undirected graph representing the country cities, and ranked list of exciting cities, you are to answer Q quires, each one asking for the shortest path between 2 cities utilizing only the first K cities from the ranked list.
For example, given the graph in the sample (4 cities and ranked list [2 1])
- 1 - Query (k = 0, Src = 3, dest = 4): means no cities to use as intermediate, hence only direct path allowed 3-4 with cost 10.
- 2 - Query (k = 1, Src = 3, dest = 4): means we can use first city on list (2), hence we can choose between paths (3-4, 3-2-4) path 3-2-4 with cost 8 is best.
- 3 - Query (k = 2, Src = 3, dest = 4): means we can use first 2 cities on list (1, 2), hence we can choose between paths (3-4, 3-2-4, 3-2-1-4) path 3-2-1-4 with cost 6 is best.
Input
The first line of input contains an integer T that represents the number of test cases, then follow T test cases, each in following format:
Line 1 - N (1 ≤ N ≤ 150), the number of cities of the country.
N-1 lines follow, where ith line represents ith-city connection costs, Ci,j is the cost of edge (i, j), if there is no edge between i, j then Ci, j = -1 else 1 ≤ Ci,j ≤ 10000.
C1,2 C1,3 ... C1,N
C2,3 C2,4 ... C2,N
...
CN-1,N
Line N+1 - P (0 ≤ P ≤ N), represents the size of ranked list.
Line N+2 - P space-separated list of distinct cities ids (1 ≤ city id ≤ N)
Line N+3 - Q (1 ≤ Q ≤ 6000), represents the number of queries.
Q lines follow
K source destination
...
Note that: 0 ≤ K ≤ P, 1 ≤ source, destination ≤ N.
Output
For each test case, output a single line of output in the form "Case K: A1 A2 ... Aq" where K is the number of the test case and [A1 A2 ... Aq] are the answers for the Q queries. Each answer is the shortest path cost between the 2 given cities using the first only K cities of given list as intermediate cities. In case there is no path between 2 cities, the answer is -1.
Example
Input: 1 4 2 -1 3 1 7 10 2 2 1 3 0 3 4 1 3 4 2 3 4 Output: Case 1: 10 8 6
Added by: | Mostafa Saad Ibrahim |
Date: | 2011-11-13 |
Time limit: | 2.426s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ASM64 |
Resource: | 10th Egyptian Collegiate Programming Contest |
hide comments
2022-07-30 04:32:34 vas14
To re-phrase the ambiguously stated problem, you're allowed to only use source, destination, and the first K ranked cities in the resulting path for each query. |
|
2017-07-14 13:26:52
O(Q * N^3) ?! With Q=6000 and N=150 ? I don't think so.. |
|
2017-07-12 17:48:00
Floyd Warshall Works fine. Nice Problem. Time complexity-O(Q*v^3) Last edit: 2017-07-12 17:50:18 |
|
2017-02-23 15:31:28
My complexity is slightly worse than O(T*N^3), still had no problems (won't say exactly cause I think it spoils the problem somewhat) |
|
2013-09-17 10:46:04 nada elnokaly
5s o.O ! my code with complexity O(T*N^3) gives TLE ! |