hw7
ABCDE
/ 0/ ∞/ ∞/ ∞/ ∞
A 6A 1
D 3D 2
E 7
ABCDEF
/ 0A 6A 5B 7C 9D 9
def floyd_warshall(graph):
    '''
    Eine leere n*m Matrix kann in Python wie folgt erstellt werden:
    m = [[0 for j in range(n)] for i in range(m)]
    Damit hat man n Spalten und m Zeilen
    Nutzen Sie dieses Prinzip um die Matrizen cost und pred zu erstellen cost soll die Kostenmatri sein und pred die Vorg ̈angermatrix
    '''
    n = len(graph)
    cost = [[INF for _ in range(n)] for _ in range(n)]
    pred = [[None for _ in range(n)] for _ in range(n)]
    for src in range(n):
        for dst in range(n):
            if graph[src][dst] != INF:
                cost[src][dst] = graph[src][dst]
                pred[src][dst] = src
    for i in range(n):
        cost[i][i] = 0
        pred[i][i] = i
    for k in range(n):
        for i in range(n):
            for j in range(n):
                if cost[i][j] > cost[i][k] + cost[k][j]:
                    cost[i][j] = cost[i][k] + cost[k][j]
                    pred[i][j] = k
    return cost, pred