def 					_snake_case	(  __snake_case  ,     __snake_case						):
					print('''\nThe shortest path matrix using Floyd Warshall algorithm\n'''						)
					for i in range(__snake_case						):
										for j in range(__snake_case						):
															if dist[i][j] != float('''inf'''						):
																				print(int(dist[i][j]						)  ,     end='''\t'''						)
															else:
																				print('''INF'''  ,     end='''\t'''						)
										print()
def 					_snake_case	(  __snake_case  ,     __snake_case						):
					_UpperCamelCase			     =     [[float('''inf'''						) for _ in range(__snake_case						)] for _ in range(__snake_case						)]

					for i in range(__snake_case						):
										for j in range(__snake_case						):
															_UpperCamelCase			     =     graph[i][j]

															# check vertex k against all other vertices (i, j)
					for k in range(__snake_case						):
										# looping through rows of graph array
										for i in range(__snake_case						):
															# looping through columns of graph array
															for j in range(__snake_case						):
																				if (
																				    dist[i][k] != float('''inf'''						)
																				    and dist[k][j] != float('''inf'''						)
																				    and dist[i][k] + dist[k][j] < dist[i][j]
																				):
																									_UpperCamelCase			     =     dist[i][k] + dist[k][j]

					_print_dist(__snake_case  ,     __snake_case						)
					return dist, v


if __name__ == "__main__":
					_lowerCAmelCase       =		int(input("Enter number of vertices: "))
					_lowerCAmelCase       =		int(input("Enter number of edges: "))

					_lowerCAmelCase       =		[[float("inf") for i in range(v)] for j in range(v)]

					for i in range(v):
										_lowerCAmelCase       =		0.0

										# src and dst are indices that must be within the array size graph[e][v]
										# failure to follow this will result in an error
					for i in range(e):
										print("\nEdge ", i + 1)
										_lowerCAmelCase       =		int(input("Enter source:"))
										_lowerCAmelCase       =		int(input("Enter destination:"))
										_lowerCAmelCase       =		float(input("Enter weight:"))
										_lowerCAmelCase       =		weight

					floyd_warshall(graph, v)

					# Example Input
					# Enter number of vertices: 3
					# Enter number of edges: 2

					# # generated graph from vertex and edge inputs
					# [[inf, inf, inf], [inf, inf, inf], [inf, inf, inf]]
					# [[0.0, inf, inf], [inf, 0.0, inf], [inf, inf, 0.0]]

					# specify source, destination and weight for edge #1
					# Edge  1
					# Enter source:1
					# Enter destination:2
					# Enter weight:2

					# specify source, destination and weight for edge #2
					# Edge  2
					# Enter source:2
					# Enter destination:1
					# Enter weight:1

					# # Expected Output from the vertice, edge and src, dst, weight inputs!!
					# 0		INF	INF
					# INF	0	2
					# INF	1	0

def 					_snake_case	(  __snake_case = 100						):
					_UpperCamelCase			     =     (n * (n + 1) // 2) ** 2
					_UpperCamelCase			     =     n * (n + 1) * (2 * n + 1) // 6
					return sum_cubes - sum_squares


if __name__ == "__main__":
					print(f'{solution() = }')
