

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


_UpperCamelCase			      =		{
    "configuration_videomae": ["VIDEOMAE_PRETRAINED_CONFIG_ARCHIVE_MAP", "VideoMAEConfig"],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _UpperCamelCase			      =		[
     "VIDEOMAE_PRETRAINED_MODEL_ARCHIVE_LIST",
     "VideoMAEForPreTraining",
     "VideoMAEModel",
     "VideoMAEPreTrainedModel",
     "VideoMAEForVideoClassification",
 ]

try:
 if not is_vision_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _UpperCamelCase			      =		["VideoMAEFeatureExtractor"]
 _UpperCamelCase			      =		["VideoMAEImageProcessor"]

if TYPE_CHECKING:
 from .configuration_videomae import VIDEOMAE_PRETRAINED_CONFIG_ARCHIVE_MAP, VideoMAEConfig

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_videomae import (
      VIDEOMAE_PRETRAINED_MODEL_ARCHIVE_LIST,
      VideoMAEForPreTraining,
      VideoMAEForVideoClassification,
      VideoMAEModel,
      VideoMAEPreTrainedModel,
  )

 try:
  if not is_vision_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .feature_extraction_videomae import VideoMAEFeatureExtractor
  from .image_processing_videomae import VideoMAEImageProcessor

else:
 import sys

 _UpperCamelCase			      =		_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





import heapq







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


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

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

_UpperCamelCase			      =		dijkstra(Ga, "E", "F")
print(short_distance)  # E -- 3 --> F == 3

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

if __name__ == "__main__":
 import doctest

 doctest.testmod()


