
"""simple docstring"""

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_keras_nlp_available,
    is_tensorflow_text_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


SCREAMING_SNAKE_CASE_         =  {
    '''configuration_gpt2''': ['''GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''GPT2Config''', '''GPT2OnnxConfig'''],
    '''tokenization_gpt2''': ['''GPT2Tokenizer'''],
}

try:
   if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE_         =  ['''GPT2TokenizerFast''']

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE_         =  [
       '''GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
       '''GPT2DoubleHeadsModel''',
       '''GPT2ForQuestionAnswering''',
       '''GPT2ForSequenceClassification''',
       '''GPT2ForTokenClassification''',
       '''GPT2LMHeadModel''',
       '''GPT2Model''',
       '''GPT2PreTrainedModel''',
       '''load_tf_weights_in_gpt2''',
   ]

try:
   if not is_tf_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE_         =  [
       '''TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
       '''TFGPT2DoubleHeadsModel''',
       '''TFGPT2ForSequenceClassification''',
       '''TFGPT2LMHeadModel''',
       '''TFGPT2MainLayer''',
       '''TFGPT2Model''',
       '''TFGPT2PreTrainedModel''',
   ]

try:
   if not is_keras_nlp_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE_         =  ['''TFGPT2Tokenizer''']

try:
   if not is_flax_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE_         =  ['''FlaxGPT2LMHeadModel''', '''FlaxGPT2Model''', '''FlaxGPT2PreTrainedModel''']

if TYPE_CHECKING:
   from .configuration_gpta import GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTaConfig, GPTaOnnxConfig
   from .tokenization_gpta import GPTaTokenizer

   try:
      if not is_tokenizers_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .tokenization_gpta_fast import GPTaTokenizerFast

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_gpta import (
          GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
          GPTaDoubleHeadsModel,
          GPTaForQuestionAnswering,
          GPTaForSequenceClassification,
          GPTaForTokenClassification,
          GPTaLMHeadModel,
          GPTaModel,
          GPTaPreTrainedModel,
          load_tf_weights_in_gpta,
      )

   try:
      if not is_tf_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_tf_gpta import (
          TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
          TFGPTaDoubleHeadsModel,
          TFGPTaForSequenceClassification,
          TFGPTaLMHeadModel,
          TFGPTaMainLayer,
          TFGPTaModel,
          TFGPTaPreTrainedModel,
      )

   try:
      if not is_keras_nlp_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .tokenization_gpta_tf import TFGPTaTokenizer

   try:
      if not is_flax_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_flax_gpta import FlaxGPTaLMHeadModel, FlaxGPTaModel, FlaxGPTaPreTrainedModel

else:
   import sys

   SCREAMING_SNAKE_CASE_         =  _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)





"""simple docstring"""

import heapq




def       lowercase__  (   lowerCAmelCase			:   str	,			lowerCAmelCase			:   int	,			lowerCAmelCase			:   Optional[Any]	)	-> Union[str, Any]:






    """simple docstring"""




    UpperCAmelCase       =   [(0, start)]  # cost from start node,end node
    UpperCAmelCase       =   set()
    while heap:
        ((UpperCAmelCase)     ,							(UpperCAmelCase))       =   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       =   cost + c
            heapq.heappush(lowerCAmelCase	,			(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()



