SHPATH - The Shortest Path


You are given a list of cities. Each direct connection between two cities has its transportation cost (an integer bigger than 0). The goal is to find the paths of minimum cost between pairs of cities. Assume that the cost of each path (which is the sum of costs of all direct connections belongning to this path) is at most 200000. The name of a city is a string containing characters a,...,z and is at most 10 characters long.

Input

 

s [the number of tests <= 10]
n [the number of cities <= 10000]
NAME [city name]
p [the number of neighbours of city NAME]
nr cost [nr - index of a city connected to NAME (the index of the first city is 1)]
           [cost - the transportation cost]
r [the number of paths to find <= 100]
NAME1 NAME2 [NAME1 - source, NAME2 - destination]
[empty line separating the tests]

 

Output

 

cost [the minimum transportation cost from city NAME1 to city NAME2 (one per line)]

 

Example

 

Input:
1
4
gdansk
2
2 1
3 3
bydgoszcz
3
1 1
3 1
4 4
torun
3
1 3
2 1
4 1
warszawa
2
2 4
3 1
2
gdansk warszawa
bydgoszcz warszawa

Output:
3
2

 

Warning: large Input/Output data, be careful with certain languages


hide comments
hitesh87: 2019-05-17 19:43:35

@harshraj22aug Didn't try it but it might certainly increase TC. e.g if no. of query are small like 1,2 etc then Floyd Warshall Algorithm will take O(V^3) while Djikstra can handle in O(V^2).
Don't relay on spoj ool kit for this.

harshraj22aug: 2019-05-17 12:58:53

Recently I came to know about Floyd Warshall Algorithm, which gives the shortest path between all pairs of points in the graph. I wonder why isn't anyone using that here, rather than doing Dijkstra for every query ?
(Is it due to huge difference in time complexity in both algorithms , or am I failing to understand something important ? )

Narendra yadav: 2019-04-19 22:14:44

@alphacoder101:
How can you .... "Stop Dijkstra if the destination is arrived i.e if current node is destination". Won't this give WA (non-optimal) ?

Last edit: 2019-04-19 22:15:00
gs959_me: 2019-04-07 08:59:40

Phew!! got AC with 1.29 sec..

alphacoder101: 2019-02-06 06:29:38

AC in one go.
Consider using :
1. 1 - indexed list
2. Min - Priority queue ( Priority Queue with negative weights / Multiset )
3. Stop Dijkstra if the destination is arrived i.e if current node is destination
4. Use maps to convert City names to indexes

surajgoel1225: 2019-01-03 18:25:03

Simpe Djikstra,using priority_queue in c++.

marethyu1: 2018-12-25 20:24:35

That was close! AC in 0.94

vivek_rathi: 2018-12-16 11:45:16

Don't use set , use priority queue to save yourself from TLE

nikbansal_123: 2018-10-08 00:15:39

TIP: Use the priority_queue implementation of Dijkstra to avoid TLE instead of set

ameyanator: 2018-09-24 08:05:51

Hello World in Dijkstra


Added by:Darek Dereniowski
Date:2004-05-10
Time limit:1.5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All
Resource:DASM Programming League 2003 (problemset 11)