ここでは、単一始点最短路問題について、ダイクストラ法での解法をpython 3 で、 蟻本 P98 を参考に、実装してみます。

なお、下記のコードでは最終的に経路を path という名のリスト(配列)で出力させています。

V, E = 7, 10 # 頂点の数、辺の数
inf = float('INF')
# cost[u][v] は辺e = (u, v) のコスト(存在しない場合は inf)
cost = [[  0,   2,   5, inf, inf, inf, inf],  #頂点A
        [  2,   0,   4,   6,  10, inf, inf],  #頂点B
        [  5,   4,   0,   2, inf, inf, inf],  #頂点C
        [inf,   6,   2,   0, inf,   1, inf],  #頂点D
        [inf,  10, inf, inf,   0,   3,   5],  #頂点E
        [inf, inf, inf,   1,   3,   0,   9],  #頂点F
        [inf, inf, inf, inf,   5,   9,   0]]  #頂点G
d = {} #最短距離を格納する辞書
used = {} #すでに使われたか?のフラグ
prev = {} #最短路の直前の頂点
# 始点 sから各頂点への最短距離を求める
def dijkstra(s):
    # inf で初期化    
    for v in range(V):
        d[v] = inf
    # False で初期化   
    for v in range(V):
        used[v] = False
    # -1 で初期化
    for v in range(V):
        prev[v] = -1
    #始点から始点のへの距離は(当たり前に)0
    d[s] = 0
    while True:
        v = -1
        for u in range(V):
            if used[u] == False and (v == -1 or d[u] < d[v]):
                v = u
        if v == -1:
            break
        used[v] = True
        for u in range(V):
            if d[u] > d[v] + cost[v][u]:
                d[u] = d[v] + cost[v][u]
                prev[u] = v
# 頂点sから 頂点tへの最短路をリストへ記入
def get_path(s, t):
    path = []
    # tがsになるまで prev[t] を辿っていく
    while t != s:
        path.append(t)
        t = prev[t]
    path.append(s)
    return path[::-1] #このままだと t -> sの順になっているので逆順にする

#実行部
dijkstra(0)
path = get_path(0, 6)
print(path) # --> [0, 2, 3, 5, 4, 6]