Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Precomputation: Find all pairs shortest paths, e.g. using Floyd-Warshall
- n = number of nodes
- for i=1 to n: for j=1 to n: d[i][j]=INF
- for k=1 to n:
- for i=1 to n:
- for j=1 to n:
- d[i][j] = min(d[i][j], d[i][k] + d[k][j])
- //That *really* gives the shortest distance between every pair of nodes! :-)
- //Now try all permutations
- shortest = INF
- for each permutation a[1],a[2],...a[k] of the 'mustpass' nodes:
- shortest = min(shortest, d['start'][a[1]]+d[a[1]][a[2]]+...+d[a[k]]['end'])
- print shortest
Add Comment
Please, Sign In to add comment