
from __future__ import annotations

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

SCREAMING_SNAKE_CASE__							=    {
    """A""": ["""B""", """C"""],
    """B""": ["""A""", """D""", """E"""],
    """C""": ["""A""", """F"""],
    """D""": ["""B"""],
    """E""": ["""B""", """F"""],
    """F""": ["""C""", """E"""],
}




def 							__SCREAMING_SNAKE_CASE       (		SCREAMING_SNAKE_CASE	:				dict   ,							SCREAMING_SNAKE_CASE	:				str      )					->						list[str]:
				__lowercase								= {start}
				__lowercase								= [start]
				__lowercase								= Queue()
				queue.put(SCREAMING_SNAKE_CASE      )
				while not queue.empty():
								__lowercase								= queue.get()
								for w in graph[v]:
												if w not in explored:
																explored.add(SCREAMING_SNAKE_CASE      )
																result.append(SCREAMING_SNAKE_CASE      )
																queue.put(SCREAMING_SNAKE_CASE      )
				return result




def 							__SCREAMING_SNAKE_CASE       (		SCREAMING_SNAKE_CASE	:				dict   ,							SCREAMING_SNAKE_CASE	:				str      )					->						list[str]:
				__lowercase								= {start}
				__lowercase								= [start]
				__lowercase								= deque([start]      )
				while queue:
								__lowercase								= queue.popleft()
								for child in graph[v]:
												if child not in visited:
																visited.add(SCREAMING_SNAKE_CASE      )
																result.append(SCREAMING_SNAKE_CASE      )
																queue.append(SCREAMING_SNAKE_CASE      )
				return result




def 							__SCREAMING_SNAKE_CASE       (		SCREAMING_SNAKE_CASE	:				str      )					->						None:
				__lowercase								= F"""from __main__ import G, {name}"""
				__lowercase								= 10000
				__lowercase								= timeit(F"""{name}(G, 'A')"""   ,							setup=SCREAMING_SNAKE_CASE   ,							number=SCREAMING_SNAKE_CASE      )
				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







from __future__ import annotations

from enum import Enum
class      A__       (						lowerCAmelCase__    ):
							lowerCAmelCase__		:						Dict         =							24
							lowerCAmelCase__		:						Dict         =							21
							lowerCAmelCase__		:						Union[str, Any]         =							18
							lowerCAmelCase__		:						Dict         =							15
							lowerCAmelCase__		:						Any         =							12
							lowerCAmelCase__		:						Union[str, Any]         =							9
							lowerCAmelCase__		:						Any         =							6
							lowerCAmelCase__		:						Optional[Any]         =							3
							lowerCAmelCase__		:						Union[str, Any]         =							2
							lowerCAmelCase__		:						List[Any]         =							1
							lowerCAmelCase__		:						Optional[Any]         =							-1
							lowerCAmelCase__		:						Tuple         =							-2
							lowerCAmelCase__		:						Dict         =							-3
							lowerCAmelCase__		:						Union[str, Any]         =							-6
							lowerCAmelCase__		:						Any         =							-9
							lowerCAmelCase__		:						Union[str, Any]         =							-12
							lowerCAmelCase__		:						str         =							-15
							lowerCAmelCase__		:						Optional[int]         =							-18
							lowerCAmelCase__		:						Any         =							-21
							lowerCAmelCase__		:						Any         =							-24






class      A__       (						lowerCAmelCase__    ):
							lowerCAmelCase__		:						Tuple         =							8
							lowerCAmelCase__		:						Union[str, Any]         =							7
							lowerCAmelCase__		:						Optional[Any]         =							6
							lowerCAmelCase__		:						Tuple         =							5
							lowerCAmelCase__		:						Optional[int]         =							4
							lowerCAmelCase__		:						Optional[int]         =							3
							lowerCAmelCase__		:						Optional[int]         =							2
							lowerCAmelCase__		:						Any         =							1






def 							__SCREAMING_SNAKE_CASE       (		SCREAMING_SNAKE_CASE	:				float   ,							SCREAMING_SNAKE_CASE	:				str | SIUnit   ,							SCREAMING_SNAKE_CASE	:				str | SIUnit   ,							)					->						float:
				if isinstance(SCREAMING_SNAKE_CASE   ,							SCREAMING_SNAKE_CASE      ):
								__lowercase								= SIUnit[known_prefix.lower()]
				if isinstance(SCREAMING_SNAKE_CASE   ,							SCREAMING_SNAKE_CASE      ):
								__lowercase								= SIUnit[unknown_prefix.lower()]
				__lowercase								= known_amount * (
				    10 ** (known_prefix.value - unknown_prefix.value)
				)
				return unknown_amount




def 							__SCREAMING_SNAKE_CASE       (		SCREAMING_SNAKE_CASE	:				float   ,							SCREAMING_SNAKE_CASE	:				str | BinaryUnit   ,							SCREAMING_SNAKE_CASE	:				str | BinaryUnit   ,							)					->						float:
				if isinstance(SCREAMING_SNAKE_CASE   ,							SCREAMING_SNAKE_CASE      ):
								__lowercase								= BinaryUnit[known_prefix.lower()]
				if isinstance(SCREAMING_SNAKE_CASE   ,							SCREAMING_SNAKE_CASE      ):
								__lowercase								= BinaryUnit[unknown_prefix.lower()]
				__lowercase								= known_amount * (
				    2 ** ((known_prefix.value - unknown_prefix.value) * 10)
				)
				return unknown_amount


if __name__ == "__main__":
							import doctest

							doctest.testmod()





