
"""simple docstring"""





import heapq







def 			__a  (	__lowerCamelCase,	__lowerCamelCase,	__lowerCamelCase						):
   UpperCAmelCase_      :      Union[str, Any]      =					[(0, start)]  # cost from start node,end node
   UpperCAmelCase_      :      Optional[Any]      =					set()
   while heap:
      (UpperCAmelCase_)      :      Union[str, Any]      =					heapq.heappop(__lowerCamelCase						)
      if u in visited:
         continue
      visited.add(__lowerCamelCase						)
      if u == end:
         return cost
      for v, c in graph[u]:
         if v in visited:
            continue
         UpperCAmelCase_      :      List[Any]      =					cost + c
         heapq.heappush(__lowerCamelCase,	(next_item, v)						)
   return -1


_a	 =							{
    'A': [['B', 2], ['C', 5]],
    'B': [['A', 2], ['D', 3], ['E', 1], ['F', 1]],
    'C': [['A', 5], ['F', 3]],
    'D': [['B', 3]],
    'E': [['B', 4], ['F', 3]],
    'F': [['C', 3], ['E', 3]],
}
_a	 =							{
    'B': [['C', 1]],
    'C': [['D', 1]],
    'D': [['F', 1]],
    'E': [['B', 1], ['F', 3]],
    'F': [],
}
_a	 =							{
    'B': [['C', 1]],
    'C': [['D', 1]],
    'D': [['F', 1]],
    'E': [['B', 1], ['G', 2]],
    'F': [],
    'G': [['F', 1]],
}

_a	 =							dijkstra(G, 'E', 'C')
print(short_distance)  # E -- 3 --> F -- 3 --> C == 6

_a	 =							dijkstra(Ga, 'E', 'F')
print(short_distance)  # E -- 3 --> F == 3

_a	 =							dijkstra(Ga, 'E', 'F')
print(short_distance)  # E -- 2 --> G -- 1 --> F == 3

if __name__ == "__main__":
    import doctest

    doctest.testmod()




"""simple docstring"""





from hashlib import mda, shaaaa

_a	 =							(shaaaa, mda)


class A_			:




  '''simple docstring'''







  def __init__(	self       ,     lowercase_ = 8						):

     """simple docstring"""
     UpperCAmelCase_      :      List[str]      =					0B0
     UpperCAmelCase_      :      Union[str, Any]      =					size







  def  UpperCamelCase__      (	self       ,     lowercase_						):

     """simple docstring"""
     UpperCAmelCase_      :      Union[str, Any]      =					self.hash_(lowercase_						)
     self.bitarray |= h







  def  UpperCamelCase__      (	self       ,     lowercase_						):

     """simple docstring"""
     UpperCAmelCase_      :      Optional[int]      =					self.hash_(lowercase_						)
     return (h & self.bitarray) == h







  def __contains__(	self       ,     lowercase_						):

     """simple docstring"""
     return self.exists(lowercase_						)







  def  UpperCamelCase__      (	self       ,     lowercase_						):

     """simple docstring"""
     UpperCAmelCase_      :      str      =					bin(lowercase_						)[2:]
     return res.zfill(self.size						)







  @property
  def  UpperCamelCase__      (	self						):

     """simple docstring"""
     return self.format_bin(self.bitarray						)







  def  UpperCamelCase__      (	self       ,     lowercase_						):

     """simple docstring"""
     UpperCAmelCase_      :      List[str]      =					0B0
     for func in HASH_FUNCTIONS:
        UpperCAmelCase_      :      str      =					(
            int.from_bytes(func(value.encode()						).digest()       ,     "little"						) % self.size
        )
        res |= 2**position
     return res







  def  UpperCamelCase__      (	self       ,     lowercase_						):

     """simple docstring"""
     return self.format_bin(self.hash_(lowercase_						)						)







  @property
  def  UpperCamelCase__      (	self						):

     """simple docstring"""
     UpperCAmelCase_      :      Optional[Any]      =					bin(self.bitarray						).count("1"						)
     return (n_ones / self.size) ** len(lowercase_						)


