+
    �°³js(  ã                   óv   € R t ^ RIHtHt ^ RIHt ^ RIt. R
Ot ! R R4      t	 ! R R]	4      t
 ! R	 R]	4      tR# )z
Min-heaps.
)ÚheappopÚheappush)ÚcountNÚMinHeapÚPairingHeapÚ
BinaryHeapc                   óv   a € ] tR t^t o Rt ! R R4      tR tR tR tRR lt	RR	 lt
R
 tR tR tR tRtV tR# )r   zêBase class for min-heaps.

A MinHeap stores a collection of key-value pairs ordered by their values.
It supports querying the minimum pair, inserting a new pair, decreasing the
value in an existing pair and deleting the minimum pair.
c                   ó4   a € ] tR t^t o RtRtR tR tRtV t	R# )ÚMinHeap._Itemz2Used by subclassess to represent a key-value pair.c                ó   € Wn         W n        R # ©N©ÚkeyÚvalue)Úselfr   r   s   &&&ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/utils/heaps.pyÚ__init__ÚMinHeap._Item.__init__   s   € ØŒHØŽJó    c                óD   € \        V P                  V P                  34      # r   )Úreprr   r   ©r   s   &r   Ú__repr__ÚMinHeap._Item.__repr__   s   € Ü˜Ÿ™ 4§:¡:Ð.Ó/Ð/r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   Ú_Itemr
      s   ø‡ € Ù@à$ˆ	ò	÷	0ð 	0r   r$   c                ó   € / V n         R# )zInitialize a new min-heap.N©Ú_dictr   s   &r   r   ÚMinHeap.__init__!   s	   € àˆŽ
r   c                ó   € \         h)z¸Query the minimum key-value pair.

Returns
-------
key, value : tuple
    The key-value pair with the minimum value in the heap.

Raises
------
NetworkXError
    If the heap is empty.
©ÚNotImplementedErrorr   s   &r   ÚminÚMinHeap.min%   ó
   € ô "Ð!r   c                ó   € \         h)z»Delete the minimum pair in the heap.

Returns
-------
key, value : tuple
    The key-value pair with the minimum value in the heap.

Raises
------
NetworkXError
    If the heap is empty.
r*   r   s   &r   ÚpopÚMinHeap.pop4   r.   r   Nc                ó   € \         h)a)  Returns the value associated with a key.

Parameters
----------
key : hashable object
    The key to be looked up.

default : object
    Default value to return if the key is not present in the heap.
    Default value: None.

Returns
-------
value : object.
    The value associated with the key.
r*   ©r   r   Údefaults   &&&r   ÚgetÚMinHeap.getC   s
   € ô" "Ð!r   c                ó   € \         h)aÄ  Insert a new key-value pair or modify the value in an existing
pair.

Parameters
----------
key : hashable object
    The key.

value : object comparable with existing values.
    The value.

allow_increase : bool
    Whether the value is allowed to increase. If False, attempts to
    increase an existing value have no effect. Default value: False.

Returns
-------
decreased : bool
    True if a pair is inserted or the existing value is decreased.
r*   )r   r   r   Úallow_increases   &&&&r   ÚinsertÚMinHeap.insertV   s
   € ô* "Ð!r   c                ó,   € \        V P                  4      # ©z"Returns whether the heap if empty.©Úboolr'   r   s   &r   Ú__nonzero__ÚMinHeap.__nonzero__m   ó   € ä�D—J‘JÓÐr   c                ó,   € \        V P                  4      # r<   r=   r   s   &r   Ú__bool__ÚMinHeap.__bool__q   rA   r   c                ó,   € \        V P                  4      # )z2Returns the number of key-value pairs in the heap.)Úlenr'   r   s   &r   Ú__len__ÚMinHeap.__len__u   s   € ä�4—:‘:‹Ðr   c                ó   € WP                   9   # )zyReturns whether a key exists in the heap.

Parameters
----------
key : any hashable object.
    The key to be looked up.
r&   )r   r   s   &&r   Ú__contains__ÚMinHeap.__contains__y   s   € ð —j‘jÑ Ð r   r&   r   ©F)r   r   r   r   r   r$   r   r,   r0   r5   r9   r?   rC   rG   rJ   r    r!   r"   s   @r   r   r      sF   ø‡ € ñ÷
0ñ 
0òò"ò"ô"ô&"ò. ò ò÷!ð !r   c                   ó’   a a€ ] tR t^„t oRt ! R R]P                  4      tV 3R ltR t	R t
RR ltRR ltR	 tR
 tR tRtVtV ;t# )r   zA pairing heap.c                   ó:   a a€ ] tR t^‡t oRtRtV 3R ltRtVtV ;t	# )ÚPairingHeap._NodezrA node in a pairing heap.

A tree in a pairing heap is stored using the left-child, right-sibling
representation.
c                ó^   <€ \         SV `  W4       R V n        R V n        R V n        R V n        R # r   )Úsuperr   ÚleftÚnextÚprevÚparent)r   r   r   Ú	__class__s   &&&€r   r   ÚPairingHeap._Node.__init__�   s,   ø€ Ü‰GÑ˜SÔ(àˆDŒIàˆDŒIàˆDŒIàˆDŽKr   )rR   rS   rU   rT   )rR   rS   rT   rU   )
r   r   r   r   r   r   r   r    r!   Ú__classcell__©rV   r#   s   @@r   Ú_NoderO   ‡   s   ù‡ € ñ	ð 7ˆ	÷		õ 		r   rZ   c                ó2   <€ \         SV `  4        RV n        R# )zInitialize a pairing heap.N)rQ   r   Ú_root©r   rV   s   &€r   r   ÚPairingHeap.__init__›   s   ø€ ä‰ÑÔØˆŽ
r   c                ó¢   € V P                   f   \        P                  ! R4      hV P                   P                  V P                   P                  3# ©Nzheap is empty.)r\   ÚnxÚNetworkXErrorr   r   r   s   &r   r,   ÚPairingHeap.min    s;   € Ø�:‰:ÒÜ×"Ò"Ð#3Ó4Ð4Ø—
‘
—‘ §
¡
× 0Ñ 0Ð1Ð1r   c                ó   € V P                   f   \        P                  ! R4      hV P                   pV P                  V P                   4      V n         V P                  VP
                   VP
                  VP                  3# r`   )r\   ra   rb   Ú_merge_childrenr'   r   r   )r   Úmin_nodes   & r   r0   ÚPairingHeap.pop¥   s`   € Ø�:‰:ÒÜ×"Ò"Ð#3Ó4Ð4Ø—:‘:ˆØ×)Ñ)¨$¯*©*Ó5ˆŒ
Ø�J‰J�x—|‘|Ð$Ø—‘˜hŸn™nÐ-Ð-r   c                ó\   € V P                   P                  V4      pVe   VP                  # T# r   )r'   r5   r   )r   r   r4   Únodes   &&& r   r5   ÚPairingHeap.get­   s(   € Ø�z‰z�~‰~˜cÓ"ˆØ!Ò-ˆt�z‰zÐ:°7Ð:r   c                ó:  € V P                   P                  V4      pV P                  pVeµ   W$P                  8  dO   W$n        WEJdB   W$P                  P                  8  d(   V P                  V4       V P                  WT4      V n        R# V'       dM   W$P                  8”  d=   W$n        V P                  V4      pVe"   V P                  V P                  V4      V n        R# V P                  W4      pW@P                   V&   Ve   V P                  WT4      MTV n        R# )NTF)	r'   r5   r\   r   rU   Ú_cutÚ_linkre   rZ   )r   r   r   r8   ri   ÚrootÚchilds   &&&&   r   r9   ÚPairingHeap.insert±   sÞ   € Ø�z‰z�~‰~˜cÓ"ˆØ�z‰zˆØÒØ—z‘zÔ!Ø"”
ØÓ#¨·±×0AÑ0AÔ(AØ—I‘I˜d”OØ!%§¡¨DÓ!7�D”JÙß E¯J©JÔ$6Ø"”
Ø×,Ñ,¨TÓ2�ð Ò$Ø!%§¡¨D¯J©J¸Ó!>�D”Jñ ð —:‘:˜cÓ)ˆDØ"�J‰J�s‰OØ37Ò3C˜Ÿ™ DÔ/ÈˆDŒJÙr   c                óž   € VP                   VP                   8  d   Y!r!VP                  pW2n        Ve   W#n        RVn        W!n        Wn        V# )zOLink two nodes, making the one with the smaller value the parent of
the other.
N)r   rR   rS   rT   rU   )r   rn   ÚotherrS   s   &&& r   rm   ÚPairingHeap._linkÕ   sH   € ð �;‰;˜Ÿ™Ô#Ø�%Ø�y‰yˆØŒ
ØÒØŒIØˆŒ
ØŒ	ØŒØˆr   c                óD  € VP                   pRVn         Ve‰   V P                  pRp VP                  pVf   WBn        M%VP                  pV! W%4      pWBn        TpVf   MTpK=  VP                  pVe   VP                  pV! WB4      pTpK  RVn        RVn        RVn        V# )ztMerge the subtrees of the root using the standard two-pass method.
The resulting subtree is detached from the root.
N)rR   rm   rS   rT   rU   )r   rn   ri   ÚlinkrT   rS   Ú	next_nextÚ	prev_prevs   &&      r   re   ÚPairingHeap._merge_childrenä   s±   € ð �y‰yˆØˆŒ	ØÒØ—:‘:ˆDð
 ˆDØØ—y‘y�Ø’<Ø $”IØØ ŸI™I�	Ù˜DÓ'�Ø ”	Ø�ØÒ$ØØ ’ð —9‘9ˆDØÒ"Ø ŸI™I�	Ù˜DÓ'�Ø ’àˆDŒIØˆDŒIØˆDŒKØˆr   c                óª   € VP                   pVP                  pVe   W2n        MW1P                  n        RVn         Ve   W#n         RVn        RVn        R# )zCut a node from its parent.N)rT   rS   rU   rR   )r   ri   rT   rS   s   &&  r   rl   ÚPairingHeap._cut
  sI   € à�y‰yˆØ�y‰yˆØÒØ�Ià#�K‰KÔØˆŒ	ØÒØŒIØˆDŒIØˆŽr   )r\   r   rL   )r   r   r   r   r   r   r$   rZ   r   r,   r0   r5   r9   rm   re   rl   r    r!   rX   rY   s   @@r   r   r   „   sG   ù‡ € Ùô�—‘ô õ(ò
2ò
.ô;ô"òHò$÷Lò r   c                   óV   a a€ ] tR tRt oRtV 3R ltR tR tR	R ltR
R lt	Rt
VtV ;t# )r   i  zA binary heap.c                óP   <€ \         SV `  4        . V n        \        4       V n        R# )zInitialize a binary heap.N)rQ   r   Ú_heapr   Ú_countr]   s   &€r   r   ÚBinaryHeap.__init__  s   ø€ ä‰ÑÔØˆŒ
Ü“gˆŽr   c                óÐ   € V P                   pV'       g   \        P                  ! R 4      hV P                  p V^ ,          w  r4pWQ9   d   W1V,          8X  d    WS3# \	        V4       K1  ©zheap is empty©r'   ra   rb   r}   r   ©r   ÚdictÚheapr   Ú_r   s   &     r   r,   ÚBinaryHeap.min"  s\   € Ø�z‰zˆßÜ×"Ò" ?Ó3Ð3Ø�z‰zˆð Ø  �G‰MˆE�cØŒ{˜u¨S­	Ô1Øàˆ|Ðô �DŽMr   c                óØ   € V P                   pV'       g   \        P                  ! R 4      hV P                  p V^ ,          w  r4p\	        V4       WQ9   g   K   W1V,          8X  g   K/   Y YS3# r�   r‚   rƒ   s   &     r   r0   ÚBinaryHeap.pop0  s_   € Ø�z‰zˆßÜ×"Ò" ?Ó3Ð3Ø�z‰zˆð Ø  �G‰MˆE�cÜ�DŒMØŽ{˜u¨S­	Ö1ØØˆIØˆ|Ðr   c                ó8   € V P                   P                  W4      # r   )r'   r5   r3   s   &&&r   r5   ÚBinaryHeap.get?  s   € Ø�z‰z�~‰~˜cÓ+Ð+r   c                ó.  € V P                   pW9   dS   WA,          pW%8  g   V'       d;   W%8”  d5   W$V&   \        V P                  V\        V P                  4      V34       W%8  # R # W$V&   \        V P                  V\        V P                  4      V34       R# )FT)r'   r   r}   rS   r~   )r   r   r   r8   r„   Ú	old_values   &&&&  r   r9   ÚBinaryHeap.insertB  s   € Ø�z‰zˆØŒ;Ø�	ˆIØÔ §^¸Ô8Ið
 "�S‘	Ü˜Ÿ™ e¬T°$·+±+Ó->ÀÐ%DÔEØÑ(Ð(Ùà�‰IÜ�T—Z‘Z %¬¨d¯k©kÓ):¸CÐ!@ÔAÙr   )r~   r}   r   rL   )r   r   r   r   r   r   r,   r0   r5   r9   r    r!   rX   rY   s   @@r   r   r     s&   ù‡ € Ùõòòô,÷ô r   )r   r   r   )r   Úheapqr   r   Ú	itertoolsr   Únetworkxra   Ú__all__r   r   r   © r   r   Ú<module>r”      sB   ðñ÷ $Ý ã â
2€÷t!ñ t!ônR�'ô Rôj9�ö 9r   