
"""simple docstring"""


import inspect
import os
import sys
import unittest

import accelerate
from accelerate.test_utils import execute_subprocess_async, require_tpu




class  __lowerCamelCase  ( unittest.TestCase			):




				def        UpperCAmelCase__						(				self   ):
							lowerCamelCase_					=  inspect.getfile(accelerate.test_utils   )
							lowerCamelCase_					=  os.path.sep.join(mod_file.split(os.path.sep   )[:-1] + ['''scripts''', '''test_script.py''']   )
							lowerCamelCase_					=  os.path.sep.join(inspect.getfile(self.__class__   ).split(os.path.sep   )[:-1]   )





				@require_tpu
				def        UpperCAmelCase__						(				self   ):
							lowerCamelCase_					=  f"\n            {self.test_dir}/xla_spawn.py\n            --num_cores 8\n            {self.test_file_path}\n        ".split()
							lowerCamelCase_					=  [sys.executable] + distributed_args
							execute_subprocess_async(UpperCAmelCase							,						env=os.environ.copy()   )











from __future__ import annotations

def   __lowercase       (			snake_case,	snake_case			):







				"""simple docstring"""






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

def   __lowercase       (			snake_case,	snake_case,	snake_case			):







				"""simple docstring"""






				for j in range(snake_case			):
								__magic_name__  ,					__magic_name__  ,					__magic_name__		:Tuple   =   (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   __lowercase       (			snake_case,	snake_case,	snake_case,	snake_case			):







				"""simple docstring"""






				__magic_name__		:List[Any]   =   [float('''inf'''			)] * vertex_count
				__magic_name__		:Tuple   =   0.0

				for _ in range(vertex_count - 1			):
								for j in range(snake_case			):
												__magic_name__  ,					__magic_name__  ,					__magic_name__		:Dict   =   (graph[j][k] for k in ['''src''', '''dst''', '''weight'''])

												if distance[u] != float('''inf'''			) and distance[u] + w < distance[v]:
																__magic_name__		:Tuple   =   distance[u] + w

				__magic_name__		:Tuple   =   check_negative_cycle(snake_case,	snake_case,	snake_case			)
				if negative_cycle_exists:
								raise Exception('''Negative cycle found'''			)

				return distance


if __name__ == "__main__":
					import doctest

					doctest.testmod()

					SCREAMING_SNAKE_CASE__   :      Tuple				=		int(input("""Enter number of vertices: """).strip())
					SCREAMING_SNAKE_CASE__   :      Any				=		int(input("""Enter number of edges: """).strip())

					SCREAMING_SNAKE_CASE__   :      list[dict[str, int]]				=		[{} for _ in range(E)]

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

					SCREAMING_SNAKE_CASE__   :      List[Any]				=		int(input("""\nEnter shortest path source:""").strip())
					SCREAMING_SNAKE_CASE__   :      List[str]				=		bellman_ford(graph, V, E, source)
					print_distance(shortest_distance, 0)






