Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import operator
- inf = float("inf")
- a, b, c, e, f, g, p, q, u, v, w, x, y, z = "abcefgpquvwxyz"
- g = {
- (a, b) : 4,
- (a, p) : 2,
- (a, x) : 3,
- (b, c) : 1,
- (b, e) : 5,
- (b, f) : 1,
- (c, u) : 6,
- (e, f) : 7,
- (e, w) : 4,
- (f, b) : 12,
- (f, g) : 2,
- (f, u) : 2,
- (g, u) : 1,
- (g, w) : 9,
- (p, b) : 2,
- (p, c) : 4,
- (p, v) : 8,
- (p, x) : 3,
- (q, z) : 1,
- (u, w) : 1,
- (u, y) : 10,
- (v, x) : 2,
- (v, c) : 6,
- (v, z) : 3,
- (w, q) : 4,
- (w, y) : 1,
- (x, z) : 5,
- (y, q) : 1,
- (z, x) : 6,
- (z, y) : 3
- }
- for source in (v, p, b, q):
- q = set([])
- for a, b in g:
- q.add(a)
- q.add(b)
- nodes = sorted(q)
- print(",".join(nodes))
- dist = dict((n, inf) for n in q)
- dist[source] = 0
- while q:
- u, _ = sorted(((n, v) for n, v in dist.items() if n in q), key=operator.itemgetter(1))[0]
- if dist[u] == inf:
- break
- q.remove(u)
- for v in (v for s, v in g if u is s):
- alt = dist[u] + g[u, v]
- if alt < dist[v]:
- dist[v] = alt
- print(",".join(str(dist[n]) for n in nodes))
- print("")
Add Comment
Please, Sign In to add comment