

"""simple docstring"""




from __future__ import annotations

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

__A  :					str												=	{
    '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"""




def      __SCREAMING_SNAKE_CASE		(		lowercase__   ):
					"""simple docstring"""
					if not isinstance(lowercase__    ,							lowercase__   ):
										raise ValueError("double_factorial() only accepts integral values"   )
					if n < 0:
										raise ValueError("double_factorial() not defined for negative values"   )
					return 1 if n <= 1 else n * double_factorial(n - 2   )


if __name__ == "__main__":
	import doctest

	doctest.testmod()





