

"""simple docstring"""




from __future__ import annotations

from collections import deque
from queue import Queue
from timeit import timeit

__A	:       Union[str, Any]        =						{
    'A': ['B', 'C'],
    'B': ['A', 'D', 'E'],
    'C': ['A', 'F'],
    'D': ['B'],
    'E': ['B', 'F'],
    'F': ['C', 'E'],
}
def   __SCREAMING_SNAKE_CASE		(		lowercase__     ,				lowercase__ ):
					"""simple docstring"""
					A     =   {start}
					A     =   [start]
					A     =   Queue()
					queue.put(lowercase__ )
					while not queue.empty():
										A     =   queue.get()
										for w in graph[v]:
															if w not in explored:
																				explored.add(lowercase__ )
																				result.append(lowercase__ )
																				queue.put(lowercase__ )
					return result
def   __SCREAMING_SNAKE_CASE		(		lowercase__     ,				lowercase__ ):
					"""simple docstring"""
					A     =   {start}
					A     =   [start]
					A     =   deque([start] )
					while queue:
										A     =   queue.popleft()
										for child in graph[v]:
															if child not in visited:
																				visited.add(lowercase__ )
																				result.append(lowercase__ )
																				queue.append(lowercase__ )
					return result
def   __SCREAMING_SNAKE_CASE		(		lowercase__ ):
					"""simple docstring"""
					A     =   F"""from __main__ import G, {name}"""
					A     =   10_000
					A     =   timeit(F"""{name}(G, 'A')"""     ,				setup=lowercase__     ,				number=lowercase__ )
					print(F"""{name:<35} finished {number} runs in {res:.5f} seconds""" )


if __name__ == "__main__":
	import doctest

	doctest.testmod()

	benchmark_function('breadth_first_search')
	benchmark_function('breadth_first_search_with_deque')
	# breadth_first_search                finished 10000 runs in 0.20999 seconds
	# breadth_first_search_with_deque     finished 10000 runs in 0.01421 seconds








"""simple docstring"""




__A	:       dict[str, float]        =						{
    "kilogram": 1,
    "gram": pow(10, 3),
    "milligram": pow(10, 6),
    "metric-ton": pow(10, -3),
    "long-ton": 0.00_09_84_20_73,
    "short-ton": 0.00_11_02_31_22,
    "pound": 2.20_46_24_42_02,
    "stone": 0.15_74_73_17_28,
    "ounce": 35.2_73_99_07_23,
    "carrat": 50_00,
    "atomic-mass-unit": 6.0_2213_6652E26,
}

__A	:       dict[str, float]        =						{
    "kilogram": 1,
    "gram": pow(10, -3),
    "milligram": pow(10, -6),
    "metric-ton": pow(10, 3),
    "long-ton": 10_16.0_46_08,
    "short-ton": 9_07.1_84,
    "pound": 0.45_35_92,
    "stone": 6.3_50_29,
    "ounce": 0.0_28_34_95,
    "carrat": 0.00_02,
    "atomic-mass-unit": 1.6_6054_0199E-27,
}
def   __SCREAMING_SNAKE_CASE		(		lowercase__     ,				lowercase__     ,				lowercase__ ):
					"""simple docstring"""
					if to_type not in KILOGRAM_CHART or from_type not in WEIGHT_TYPE_CHART:
										A     =   (
										    F"""Invalid 'from_type' or 'to_type' value: {from_type!r}, {to_type!r}\n"""
										    F"""Supported values are: {", ".join(lowercase__ )}"""
										)
										raise ValueError(lowercase__ )
					return value * KILOGRAM_CHART[to_type] * WEIGHT_TYPE_CHART[from_type]


if __name__ == "__main__":
	import doctest

	doctest.testmod()





