4
4
5
5
from math import inf
6
6
7
- def gerar_matriz (n_linhas , n_colunas ):
8
- return [[0 ]* n_colunas for _ in range (n_linhas )]
7
+
8
+ def gerar_matriz (n_linhas , n_colunas ):
9
+ return [[0 ] * n_colunas for _ in range (n_linhas )]
10
+
9
11
10
12
def imprime (matriz , vertices ):
11
13
print (' ' , end = '' )
12
14
for i in range (vertices ):
13
- print (" " ,i + 1 ,end = '' )
15
+ print (" " , i + 1 , end = '' )
14
16
print ('' )
15
17
for i in range (vertices ):
16
18
print (i + 1 , matriz [i ])
17
19
20
+
18
21
def floyd_warshall (matriz , vertices ):
19
22
dist = gerar_matriz (vertices , vertices )
20
23
# inicializando a matriz com infinito nas diagonais e as distancias das arestas
21
24
for i in range (vertices ):
22
25
for j in range (vertices ):
23
- if ( i != j ) :
24
- if ( matriz [i ][j ] != 0 ) :
26
+ if i != j :
27
+ if matriz [i ][j ] != 0 :
25
28
dist [i ][j ] = matriz [i ][j ]
26
29
else :
27
30
dist [i ][j ] = inf
@@ -32,19 +35,21 @@ def floyd_warshall(matriz, vertices):
32
35
for i in range (vertices ):
33
36
for j in range (vertices ):
34
37
Dist = inf
35
- if ( dist [i ][k ] != inf or dist [k ][j ] != inf ) :
38
+ if dist [i ][k ] != inf or dist [k ][j ] != inf :
36
39
Dist = dist [i ][k ] + dist [k ][j ]
37
-
38
- if ( i != j and Dist != inf and Dist < dist [i ][j ]) :
40
+
41
+ if i != j and Dist != inf and Dist < dist [i ][j ]:
39
42
dist [i ][j ] = Dist
40
43
# printando o resultado
41
44
print ('Matriz de distâncias' )
42
45
imprime (dist , vertices )
43
46
47
+
44
48
def main ():
45
- grafo = [[0 ,3 , 4 , 0 ],[0 ,0 , 0 , 5 ],[0 ,0 , 0 , 3 ],[8 ,0 , 0 , 0 ]]
49
+ grafo = [[0 , 3 , 4 , 0 ], [0 , 0 , 0 , 5 ], [0 , 0 , 0 , 3 ], [8 , 0 , 0 , 0 ]]
46
50
vertices = 4
47
51
floyd_warshall (grafo , vertices )
48
52
49
- if __name__ == "__main__" :
53
+
54
+ if __name__ == "__main__" :
50
55
main ()
0 commit comments