include = list()
results = list(list())
graph = [
[0, 0, 0, 0, 0],
[1, 0, 2, 2, 0],
[0, 0, 0, 0, 0],
[0, 0, 3, 0, 1],
[0, 0, 0, 0, 0]
]
vertice = [0, 1, 2, 3, 4]
def InitResults(sourceVertex):
for v in vertice:
if v is sourceVertex:
results[v][1] = 0
results[v][2] = "\\"
results[v][0] = v
include[v] = False
elif graph[sourceVertex][v] > 0:
results[v][1] = graph[sourceVertex][v]
results[v][2] = "sourceVertex"
results[v][0] = v
include[v] = True
else:
results[v][1] = int('inf')
results[v][2] = "\\"
results[v][0] = False
for v in vertice:
if include[v] == False:
include[v] = True
for w in vertice:
if include[w] == False:
if graph[v][w] != 0:
distance = results[v][1] + graph[v][w]
if distance < results[w][1]:
results[w][1] = distance
results[w][2] = v
#matrix是初始距离矩阵与图的相邻矩阵不同
for i in range(n):
for r in range(n):
for c in range(n):
matrix[r][c] = min(matrix[r][c], matrix[r][i] + matrix[i][c])