
"""simple docstring"""







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


SCREAMING_SNAKE_CASE_  					= {
    '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]],
}
SCREAMING_SNAKE_CASE_  					= {
    'B': [['C', 1]],
    'C': [['D', 1]],
    'D': [['F', 1]],
    'E': [['B', 1], ['F', 3]],
    'F': [],
}
SCREAMING_SNAKE_CASE_  					= {
    'B': [['C', 1]],
    'C': [['D', 1]],
    'D': [['F', 1]],
    'E': [['B', 1], ['G', 2]],
    'F': [],
    'G': [['F', 1]],
}

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

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

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

if __name__ == "__main__":
  import doctest

  doctest.testmod()



"""simple docstring"""







def       __UpperCAmelCase		(		a_      :		list[int]					)  ->							int:

   # validate:
   if not isinstance(a_     ,	a_					) or not all(
       isinstance(a_     ,	a_					) and item >= 0 for item in citations					):
      raise ValueError("The citations should be a list of non negative integers."					)

   citations.sort()
   _UpperCAmelCase 						=       len(a_					)

   for i in range(a_					):
      if citations[len_citations - 1 - i] <= i:
         return i

   return len_citations


if __name__ == "__main__":
  import doctest

  doctest.testmod()

