code: 
  
  from __future__ import annotations
  
  from statistics import mean
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				str							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    a__						=2
    a__						=list(_UpperCAmelCase							)
    a__						=[0] * len(_UpperCAmelCase							)
    a__						=0
    while True:
      a__						=True
      for i, burst_time in enumerate(_UpperCAmelCase							):
        if rem_burst_times[i] > 0:
          a__						=False
          if rem_burst_times[i] > quantum:
            t += quantum
            rem_burst_times[i] -= quantum
          else:
            t += rem_burst_times[i]
            a__						=t - burst_time
            a__						=0
      if done is True:
        return waiting_times
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				Dict			,   _A   :				int							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    return [burst + waiting for burst, waiting in zip(_UpperCAmelCase			,   _UpperCAmelCase							)]
  
  
  if __name__ == "__main__":
         lowerCamelCase     =      [3, 5, 7]
         lowerCamelCase     =      calculate_waiting_times(burst_times)
         lowerCamelCase     =      calculate_turn_around_times(burst_times, waiting_times)
         print('''Process ID \tBurst Time \tWaiting Time \tTurnaround Time''')
         for i, burst_time in enumerate(burst_times):
                print(
                    f"""  {i + 1}\t\t  {burst_time}\t\t  {waiting_times[i]}\t\t  """
                    f"""{turn_around_times[i]}"""
                )
         print(f"""\nAverage waiting time = {mean(waiting_times):.5f}""")
         print(f"""Average turn around time = {mean(turn_around_times):.5f}""")
  
style_context: 
  
  import heapq
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				Optional[Any]			,   _A   :				str			,   _A   :				Optional[Any]							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    a__						=[(0, start)]  # cost from start node,end node
    a__						=set()
    while heap:
      ((a__),   (a__))						=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
        a__						=cost + c
        heapq.heappush(_A			,   (next_item, v)							)
    return -1
  
  
  lowerCamelCase     =      {
      '''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]],
  }
  lowerCamelCase     =      {
      '''B''': [['''C''', 1]],
      '''C''': [['''D''', 1]],
      '''D''': [['''F''', 1]],
      '''E''': [['''B''', 1], ['''F''', 3]],
      '''F''': [],
  }
  lowerCamelCase     =      {
      '''B''': [['''C''', 1]],
      '''C''': [['''D''', 1]],
      '''D''': [['''F''', 1]],
      '''E''': [['''B''', 1], ['''G''', 2]],
      '''F''': [],
      '''G''': [['''F''', 1]],
  }
  
  lowerCamelCase     =      dijkstra(G, '''E''', '''C''')
  print(short_distance)  # E -- 3 --> F -- 3 --> C == 6
  
  lowerCamelCase     =      dijkstra(Ga, '''E''', '''F''')
  print(short_distance)  # E -- 3 --> F == 3
  
  lowerCamelCase     =      dijkstra(Ga, '''E''', '''F''')
  print(short_distance)  # E -- 2 --> G -- 1 --> F == 3
  
  if __name__ == "__main__":
         import doctest
  
         doctest.testmod()
  