





'''simple docstring'''






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


lowerCAmelCase									=   {
    """configuration_blip""": [
        """BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """BlipConfig""",
        """BlipTextConfig""",
        """BlipVisionConfig""",
    ],
    """processing_blip""": ["""BlipProcessor"""],
}

try:
					if not is_vision_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowerCAmelCase									=   ["""BlipImageProcessor"""]


try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowerCAmelCase									=   [
					    """BLIP_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """BlipModel""",
					    """BlipPreTrainedModel""",
					    """BlipForConditionalGeneration""",
					    """BlipForQuestionAnswering""",
					    """BlipVisionModel""",
					    """BlipTextModel""",
					    """BlipForImageTextRetrieval""",
					]

try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowerCAmelCase									=   [
					    """TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """TFBlipModel""",
					    """TFBlipPreTrainedModel""",
					    """TFBlipForConditionalGeneration""",
					    """TFBlipForQuestionAnswering""",
					    """TFBlipVisionModel""",
					    """TFBlipTextModel""",
					    """TFBlipForImageTextRetrieval""",
					]

if TYPE_CHECKING:
					from .configuration_blip import BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP, BlipConfig, BlipTextConfig, BlipVisionConfig
					from .processing_blip import BlipProcessor

					try:
										if not is_vision_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .image_processing_blip import BlipImageProcessor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_blip import (
										    BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
										    BlipForConditionalGeneration,
										    BlipForImageTextRetrieval,
										    BlipForQuestionAnswering,
										    BlipModel,
										    BlipPreTrainedModel,
										    BlipTextModel,
										    BlipVisionModel,
										)

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_blip import (
										    TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFBlipForConditionalGeneration,
										    TFBlipForImageTextRetrieval,
										    TFBlipForQuestionAnswering,
										    TFBlipModel,
										    TFBlipPreTrainedModel,
										    TFBlipTextModel,
										    TFBlipVisionModel,
										)

else:
					import sys

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










'''simple docstring'''






from collections import defaultdict

from graphs.minimum_spanning_tree_prims import prisms_algorithm as mst






def   __A    (				):
		lowerCAmelCase						,		lowerCAmelCase  :     List[Any]       						= 9, 1_4  # noqa: F841
		lowerCAmelCase  :     int       						= [
		    [0, 1, 4],
		    [0, 7, 8],
		    [1, 2, 8],
		    [7, 8, 7],
		    [7, 6, 1],
		    [2, 8, 2],
		    [8, 6, 6],
		    [2, 3, 7],
		    [2, 5, 4],
		    [6, 5, 2],
		    [3, 5, 1_4],
		    [3, 4, 9],
		    [5, 4, 1_0],
		    [1, 7, 1_1],
		]

		lowerCAmelCase  :     Optional[Any]       						= defaultdict(a_						)
		for nodea, nodea, cost in edges:
				adjancency[nodea].append([nodea, cost]						)
				adjancency[nodea].append([nodea, cost]						)

		lowerCAmelCase  :     int       						= mst(a_						)

		lowerCAmelCase  :     Tuple       						= [
		    [7, 6, 1],
		    [2, 8, 2],
		    [6, 5, 2],
		    [0, 1, 4],
		    [2, 5, 4],
		    [2, 3, 7],
		    [0, 7, 8],
		    [3, 4, 9],
		]

		for answer in expected:
				lowerCAmelCase  :     List[str]       						= tuple(answer[:2]						)
				lowerCAmelCase  :     int       						= tuple(edge[::-1]						)
				assert edge in result or reverse in result



