
"""simple docstring"""


from __future__ import annotations






def    _snake_case					(		snake_case__ :  list  ):
	if len(snake_case__  ) == 0:
		return []
	A ,   A     = min(snake_case__  ), max(snake_case__  )
	A     = int(max_value - min_value  ) + 1
	A     = [[] for _ in range(snake_case__  )]

	for i in my_list:
		buckets[int(i - min_value  )].append(snake_case__  )

	return [v for bucket in buckets for v in sorted(snake_case__  )]


if __name__ == "__main__":
		from doctest import testmod

		testmod()
		assert bucket_sort([4, 5, 3, 2, 1]) == [1, 2, 3, 4, 5]
		assert bucket_sort([0, 1, -10, 15, 2, -2]) == [-10, -2, 0, 1, 2, 15]



"""simple docstring"""

from __future__ import annotations


def lowerCAmelCase_   (					UpperCamelCase__						:			list[float]					, UpperCamelCase__						:			Any			):






 """simple docstring"""







 print(f'''Vertex\tShortest Distance from vertex {src}'''			)
 for i, d in enumerate(UpperCamelCase__			):
  print(f'''{i}\t\t{d}'''			)


def lowerCAmelCase_   (					UpperCamelCase__						:			list[dict[str, int]]					, UpperCamelCase__						:			list[float]					, UpperCamelCase__						:			int			):






 """simple docstring"""







 for j in range(UpperCamelCase__			):
  __lowercase				,		__lowercase				,		__lowercase						=						(graph[j][k] for k in ["""src""", """dst""", """weight"""])
  if distance[u] != float("""inf"""			) and distance[u] + w < distance[v]:
   return True
 return False


def lowerCAmelCase_   (					UpperCamelCase__						:			list[dict[str, int]]					, UpperCamelCase__						:			int					, UpperCamelCase__						:			int					, UpperCamelCase__						:			int			):






 """simple docstring"""







 __lowercase						=						[float("""inf"""			)] * vertex_count
 __lowercase						=						0.0

 for _ in range(vertex_count - 1			):
  for j in range(UpperCamelCase__			):
   __lowercase				,		__lowercase				,		__lowercase						=						(graph[j][k] for k in ["""src""", """dst""", """weight"""])

   if distance[u] != float("""inf"""			) and distance[u] + w < distance[v]:
    __lowercase						=						distance[u] + w

 __lowercase						=						check_negative_cycle(UpperCamelCase__					, UpperCamelCase__					, UpperCamelCase__			)
 if negative_cycle_exists:
  raise Exception("""Negative cycle found"""			)

 return distance


if __name__ == "__main__":
       import doctest

       doctest.testmod()

       UpperCAmelCase__					=int(input("Enter number of vertices: ").strip())
       UpperCAmelCase__					=int(input("Enter number of edges: ").strip())

       UpperCAmelCase__					=[{} for _ in range(E)]

       for i in range(E):
              print("Edge ", i + 1)
              UpperCAmelCase__				,   UpperCAmelCase__				,   UpperCAmelCase__					=(
                  int(x)
                  for x in input("Enter source, destination, weight: ").strip().split(" ")
              )
              UpperCAmelCase__					={"src": src, "dst": dest, "weight": weight}

       UpperCAmelCase__					=int(input("\nEnter shortest path source:").strip())
       UpperCAmelCase__					=bellman_ford(graph, V, E, source)
       print_distance(shortest_distance, 0)
