+
    �°³j¸O  ã                   ó‚  € R t ^ RIt^ RIt^ RIHt ^ RIt^ RIHtH	t	 . ROt
]P                  ! RRR7      ]! ^ ^.4      RR l4       4       t]	! ^4      ]P                  ! RRRR7      RR	 l4       4       t]P                  ! R
RRR7      RR l4       t]P                  ! RRR7      RR l4       t]P                  ! RRR7      RR l4       t]	! ^4      ]P                  ! RRR7      RR l4       4       t]	! ^4      ]P                  ! RRR7      RR l4       4       t]	! ^4      ]P                  ! RRR7      RR l4       4       tR tR# )z0
Generators and functions for bipartite graphs.
N)Úreduce)Únodes_or_numberÚpy_random_stateT)ÚgraphsÚreturns_graphc                óª  a€ \         P                  ! ^ V4      pVP                  4       '       d   \         P                  ! R4      hV w  rVw  po\	        V \
        P                  4      '       d9   \	        V\
        P                  4      '       d   S Uu. uF  qPV,           NK  	  upoVP                  V^ R7       VP                  S^R7       \        V4      \        V4      \        S4      ,           8w  d   \         P                  ! R4      hVP                  V3R lV 4       4       R\        V4       R\        S4       R2VP                  R&   V# u upi )	a°  Returns the complete bipartite graph `K_{n_1,n_2}`.

The graph is composed of two partitions with nodes 0 to (n1 - 1)
in the first and nodes n1 to (n1 + n2 - 1) in the second.
Each node in the first is connected to each node in the second.

Parameters
----------
n1, n2 : integer or iterable container of nodes
    If integers, nodes are from `range(n1)` and `range(n1, n1 + n2)`.
    If a container, the elements are the nodes.
create_using : NetworkX graph instance, (default: nx.Graph)
   Return graph of this type.

Notes
-----
Nodes are the integers 0 to `n1 + n2 - 1` unless either n1 or n2 are
containers of nodes. If only one of n1 or n2 are integers, that
integer is replaced by `range` of that integer.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.complete_bipartite_graph
úDirected Graph not supported©Ú	bipartitez,Inputs n1 and n2 must contain distinct nodesc              3   ó<   <"  € T F  pS F  q!V3x € K
  	  K  	  R # 5i©N© )Ú.0ÚuÚvÚbottoms   &  €Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/algorithms/bipartite/generators.pyÚ	<genexpr>Ú+complete_bipartite_graph.<locals>.<genexpr>A   s   øé € Ð9¡S ³&¨Q˜•V±&‘V£Sùs   ƒzcomplete_bipartite_graph(z, Ú)Úname)ÚnxÚempty_graphÚis_directedÚNetworkXErrorÚ
isinstanceÚnumbersÚIntegralÚadd_nodes_fromÚlenÚadd_edges_fromÚgraph)Ún1Ún2Úcreate_usingÚGÚtopÚir   s   &&&   @r   Úcomplete_bipartite_graphr(      s  ø€ ô: 	�Š�q˜,Ó'€AØ‡}�}‡‚Ü×ÒÐ=Ó>Ð>à�G€BØ�J€BˆÜ�"”g×&Ñ&×'Ò'¬J°r¼7×;KÑ;K×,LÒ,LÙ"(Ó)¡&˜Q�q—&�&¡&Ñ)ˆØ×Ñ�S AÐÔ&Ø×Ñ�V qÐÔ)Ü
ˆ1ƒv”�S“œC ›KÕ'Ô'Ü×ÒÐMÓNÐNØ×ÑÔ9¡SÓ9Ô9Ø1´#°c³(°¸2¼cÀ&»k¸]È!ÐL€A‡G�GˆF�OØ€Hùò *s   ÂEÚbipartite_configuration_model)r   r   r   c                ó”  aa€ \         P                  ! ^ V\         P                  R7      pVP                  4       '       d   \         P                  ! R4      h\        V 4      p\        V4      p\        V 4      p\        V4      pWx8X  g   \         P                  ! RV RV 24      h\        WEV4      p\        V 4      ^ 8X  g   \        V 4      ^ 8X  d   V# \        V4       U	u. uF  q™.W	,          ,          NK  	  p
p	V
 UUu. uF  q» F  qÌNK  	  K  	  uppo\        WUV,           4       U	u. uF  q™.WV,
          ,          ,          NK  	  p
p	V
 UUu. uF  q» F  qÌNK  	  K  	  uppoVP                  S4       VP                  S4       VP                  VV3R l\        V4       4       4       RVn        V# u up	i u uppi u up	i u uppi )a{  Returns a random bipartite graph from two given degree sequences.

Parameters
----------
aseq : list
   Degree sequence for node set A.
bseq : list
   Degree sequence for node set B.
create_using : NetworkX graph instance, optional
   Return graph of this type.
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.

The graph is composed of two partitions. Set A has nodes 0 to
(len(aseq) - 1) and set B has nodes len(aseq) to (len(bseq) - 1).
Nodes from set A are connected to nodes in set B by choosing
randomly from the possible free stubs, one in A and one in B.

Notes
-----
The sum of the two sequences must be equal: sum(aseq)=sum(bseq)
If no graph type is specified use MultiGraph with parallel edges.
If you want a graph with no parallel edges use create_using=Graph()
but then the resulting degree sequences might not be exact.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.configuration_model
©Údefaultr   ú/invalid degree sequences, sum(aseq)!=sum(bseq),Ú,c              3   óH   <"  € T F  pSV,          SV,          .x € K  	  R # 5ir   r   )r   r'   ÚastubsÚbstubss   & €€r   r   Ú&configuration_model.<locals>.<genexpr>ˆ   s   øé € ÐA±[°�f˜Q•i ¨¥Õ+³[ùs   ƒ"r)   )r   r   Ú
MultiGraphr   r   r   ÚsumÚ_add_nodes_with_bipartite_labelÚmaxÚrangeÚshuffler    r   )ÚaseqÚbseqr$   Úseedr%   ÚlenaÚlenbÚsumaÚsumbr   ÚstubsÚsubseqÚxr0   r1   s   &&&&         @@r   Úconfiguration_modelrC   F   s‚  ù€ ôF 	�Š�q˜,´·±Ô>€AØ‡}�}‡‚Ü×ÒÐ=Ó>Ð>ô ˆt‹9€DÜˆt‹9€DÜˆt‹9€DÜˆt‹9€DàŒ<Ü×ÒØ=¸d¸VÀ1ÀTÀFÐKó
ð 	
ô 	(¨°Ó6€Aä
ˆ4ƒy�A„~œ˜T› aœØˆô %*¨$¤KÓ0¡K˜qˆS�4•7�]ˆ]¡K€EÐ0Ù#Ô4™e�FªV¨Ša©V‰a™eÒ4€Fä+0°¸dµ{Ô+CÓDÑ+C aˆS�4˜D�•>×!Ð!Ñ+C€EÐDÙ#Ô4™e�FªV¨Ša©V‰a™eÒ4€Fð 	‡L�L�ÔØ‡L�L�Ôà×ÑÕA´U¸4´[ÓAÔAà,€A„FØ€Hùò 1ùÛ4ùâDùÛ4s   ÃF4Ã>F9Ä(F?ÅGÚbipartite_havel_hakimi_graphc                ó¨  € \         P                  ! ^ V\         P                  R7      pVP                  4       '       d   \         P                  ! R4      h\        V 4      p\        V4      p\        V 4      p\        V4      pWg8X  g   \         P                  ! RV RV 24      h\        W4V4      p\        V 4      ^ 8X  g   \        V 4      ^ 8X  d   V# \        V4       Uu. uF  q€V,          V.NK  	  p	p\        WDV,           4       Uu. uF  q�W„,
          ,          V.NK  	  p
pV	P                  4        V	'       d‰   V	P                  4       w  r¼V^ 8X  d   MnV
P                  4        W«) R  FS  pV^,          pVP                  WÈ4       V^ ;;,          ^,          uu&   V^ ,          ^ 8X  g   KB  V
P                  V4       KU  	  K�  RVn        V# u upi u upi )aE  Returns a bipartite graph from two given degree sequences using a
Havel-Hakimi style construction.

The graph is composed of two partitions. Set A has nodes 0 to
(len(aseq) - 1) and set B has nodes len(aseq) to (len(bseq) - 1).
Nodes from the set A are connected to nodes in the set B by
connecting the highest degree nodes in set A to the highest degree
nodes in set B until all stubs are connected.

Parameters
----------
aseq : list
   Degree sequence for node set A.
bseq : list
   Degree sequence for node set B.
create_using : NetworkX graph instance, optional
   Return graph of this type.

Notes
-----
The sum of the two sequences must be equal: sum(aseq)=sum(bseq)
If no graph type is specified use MultiGraph with parallel edges.
If you want a graph with no parallel edges use create_using=Graph()
but then the resulting degree sequences might not be exact.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.havel_hakimi_graph
r+   r   r-   r.   NrD   ©r   r   r3   r   r   r   r4   r5   r6   r7   ÚsortÚpopÚadd_edgeÚremover   )r9   r:   r$   r%   ÚnaseqÚnbseqr>   r?   r   r0   r1   Údegreer   Útargets   &&&           r   Úhavel_hakimi_graphrO   Ž   s‚  € ôB 	�Š�q˜,´·±Ô>€AØ‡}�}‡‚Ü×ÒÐ=Ó>Ð>ô �‹I€EÜ�‹I€Eäˆt‹9€DÜˆt‹9€DàŒ<Ü×ÒØ=¸d¸VÀ1ÀTÀFÐKó
ð 	
ô 	(¨°%Ó8€Aä
ˆ4ƒy�A„~œ˜T› aœØˆô %*¨%¤LÓ1¡L˜q�A�w˜‹l¡L€FÐ1Ü,1°%À½Ô,GÓHÑ,G q�A•I� Ó"Ñ,G€FÐHØ
‡K�K„Mß
Ø—j‘j“l‰ˆØ�QŒ;Øà�‰ŒØ˜W˜XÓ&ˆFØ�q•	ˆAØ�J‰J�qÔØ�1�I˜�N‹IØ�a�y˜AŽ~Ø—‘˜fÖ%ó 'ð ,€A„FØ€Hùò# 2ùÚHó   ÃG
ÄGc                ó¨  € \         P                  ! ^ V\         P                  R7      pVP                  4       '       d   \         P                  ! R4      h\        V 4      p\        V4      p\        V 4      p\        V4      pWg8X  g   \         P                  ! RV RV 24      h\        W4V4      p\        V 4      ^ 8X  g   \        V 4      ^ 8X  d   V# \        V4       Uu. uF  q€V,          V.NK  	  p	p\        WDV,           4       Uu. uF  q�W„,
          ,          V.NK  	  p
pV	P                  4        V
P                  4        V	'       dy   V	P                  4       w  r¼V^ 8X  d   M^V
^ V  FS  pV^,          pVP                  WÈ4       V^ ;;,          ^,          uu&   V^ ,          ^ 8X  g   KB  V
P                  V4       KU  	  K€  RVn        V# u upi u upi )aH  Returns a bipartite graph from two given degree sequences using a
Havel-Hakimi style construction.

The graph is composed of two partitions. Set A has nodes 0 to
(len(aseq) - 1) and set B has nodes len(aseq) to (len(bseq) - 1).
Nodes from set A are connected to nodes in the set B by connecting
the highest degree nodes in set A to the lowest degree nodes in
set B until all stubs are connected.

Parameters
----------
aseq : list
   Degree sequence for node set A.
bseq : list
   Degree sequence for node set B.
create_using : NetworkX graph instance, optional
   Return graph of this type.

Notes
-----
The sum of the two sequences must be equal: sum(aseq)=sum(bseq)
If no graph type is specified use MultiGraph with parallel edges.
If you want a graph with no parallel edges use create_using=Graph()
but then the resulting degree sequences might not be exact.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.reverse_havel_hakimi_graph
r+   r   r-   r.   Ú$bipartite_reverse_havel_hakimi_graphrF   )r9   r:   r$   r%   r<   r=   r>   r?   r   r0   r1   rM   r   rN   s   &&&           r   Úreverse_havel_hakimi_graphrS   Ù   s‚  € ôB 	�Š�q˜,´·±Ô>€AØ‡}�}‡‚Ü×ÒÐ=Ó>Ð>ô ˆt‹9€DÜˆt‹9€DÜˆt‹9€DÜˆt‹9€DàŒ<Ü×ÒØ=¸d¸VÀ1ÀTÀFÐKó
ð 	
ô 	(¨°Ó6€Aä
ˆ4ƒy�A„~œ˜T› aœØˆô %*¨$¤KÓ0¡K˜q�A�w˜‹l¡K€FÐ0Ü+0°¸dµ{Ô+CÓDÑ+C a�A•H�~˜qÓ!Ñ+C€FÐDØ
‡K�K„MØ
‡K�K„Mß
Ø—j‘j“l‰ˆØ�QŒ;Øà˜Q˜vÓ&ˆFØ�q•	ˆAØ�J‰J�qÔØ�1�I˜�N‹IØ�a�y˜AŽ~Ø—‘˜fÖ%ó 'ð 4€A„FØ€Hùò# 1ùÚDrP   c                óÈ  € \         P                  ! ^ V\         P                  R7      pVP                  4       '       d   \         P                  ! R4      h\        V 4      p\        V4      p\        V 4      p\        V4      pWg8X  g   \         P                  ! RV RV 24      h\        W4V4      p\        V 4      ^ 8X  g   \        V 4      ^ 8X  d   V# \        V4       Uu. uF  q€V,          V.NK  	  p	p\        WDV,           4       Uu. uF  q�W„,
          ,          V.NK  	  p
pV	'       Ed"   V	P                  4        V	P                  4       w  r¼V^ 8X  d   M÷V
P                  4        V
^ V^,           pW«) V^,          ,           R p\        Wí4       UUu. uF  qÿ F  pVNK  	  K  	  ppp\        V4      \        V4      \        V4      ,           8  d    VP                  VP                  4       4       V FS  pV^,          pVP                  WÈ4       V^ ;;,          ^,          uu&   V^ ,          ^ 8X  g   KB  V
P                  V4       KU  	  EK*  RVn        V# u upi u upi u uppi )a{  Returns a bipartite graph from two given degree sequences using
an alternating Havel-Hakimi style construction.

The graph is composed of two partitions. Set A has nodes 0 to
(len(aseq) - 1) and set B has nodes len(aseq) to (len(bseq) - 1).
Nodes from the set A are connected to nodes in the set B by
connecting the highest degree nodes in set A to alternatively the
highest and the lowest degree nodes in set B until all stubs are
connected.

Parameters
----------
aseq : list
   Degree sequence for node set A.
bseq : list
   Degree sequence for node set B.
create_using : NetworkX graph instance, optional
   Return graph of this type.

Notes
-----
The sum of the two sequences must be equal: sum(aseq)=sum(bseq)
If no graph type is specified use MultiGraph with parallel edges.
If you want a graph with no parallel edges use create_using=Graph()
but then the resulting degree sequences might not be exact.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.alternating_havel_hakimi_graph
r+   r   r-   r.   NÚ(bipartite_alternating_havel_hakimi_graph)r   r   r3   r   r   r   r4   r5   r6   r7   rG   rH   ÚzipÚappendrI   rJ   r   )r9   r:   r$   r%   rK   rL   r>   r?   r   r0   r1   rM   r   ÚsmallÚlargeÚzrB   r@   rN   s   &&&                r   Úalternating_havel_hakimi_graphr[   #  sô  € ôD 	�Š�q˜,´·±Ô>€AØ‡}�}‡‚Ü×ÒÐ=Ó>Ð>ô �‹I€EÜ�‹I€EÜˆt‹9€DÜˆt‹9€DàŒ<Ü×ÒØ=¸d¸VÀ1ÀTÀFÐKó
ð 	
ô 	(¨°%Ó8€Aä
ˆ4ƒy�A„~œ˜T› aœØˆä$)¨%¤LÓ1¡L˜q�A�w˜‹l¡L€FÐ1Ü,1°%À½Ô,GÓHÑ,G q�A•I� Ó"Ñ,G€FÐHß
ˆ&Ø�‰ŒØ—j‘j“l‰ˆØ�QŒ;ØØ�‰ŒØ�q˜6 Q�;Ð'ˆØ˜ &¨A¥+Õ-Ð0Ð1ˆÜ Ô-Ô9Ñ-�q²q°!“±q‘Ñ-ˆÑ9Üˆu‹:œ˜E›
¤S¨£ZÕ/Ô/Ø�L‰L˜Ÿ™›Ô%ÛˆFØ�q•	ˆAØ�J‰J�qÔØ�1�I˜�N‹IØ�a�y˜AŽ~Ø—‘˜fÖ%ô ð 8€A„FØ€Hùò+ 2ùÚHùó :s   ÃIÄIÆIc                óì  € \         P                  ! ^ V\         P                  R7      pVP                  4       '       d   \         P                  ! R4      hV^8”  d   \         P                  ! RV R24      h\        V 4      p\        WE^ 4      p\        V4       Uu. uF  qf.W,          ,          NK  	  ppV'       Ed(   V^ ,          '       dþ   V^ ,          ^ ,          pV^ ,          P                  V4       VP                  4       V8  g   \        V4      V8X  d2   \        V4      p	VP                  V	^R7       VP                  W‰4       K�  \        V\        V4      4       U
u. uF  qª.VP                  V
4      ,          NK  	  pp
\        R V4      pVP                  V4      p	VP                  V	^R7       VP                  W‰4       EK  VP                  V^ ,          4       EK0  RVn        V# u upi u up
i )aÞ  Create a bipartite graph with a preferential attachment model from
a given single degree sequence.

The graph is composed of two partitions. Set A has nodes 0 to
(len(aseq) - 1) and set B has nodes starting with node len(aseq).
The number of nodes in set B is random.

Parameters
----------
aseq : list
   Degree sequence for node set A.
p :  float
   Probability that a new bottom node is added.
create_using : NetworkX graph instance, optional
   Return graph of this type.
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.

References
----------
.. [1] Guillaume, J.L. and Latapy, M.,
   Bipartite graphs as models of complex networks.
   Physica A: Statistical Mechanics and its Applications,
   2006, 371(2), pp.795-813.
.. [2] Jean-Loup Guillaume and Matthieu Latapy,
   Bipartite structure of all complex networks,
   Inf. Process. Lett. 90, 2004, pg. 215-221
   https://doi.org/10.1016/j.ipl.2004.03.007

Notes
-----
The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.preferential_attachment_graph
r+   r   zprobability z > 1r	   c                 ó   € W,           # r   r   )rB   Úys   &&r   Ú<lambda>Ú/preferential_attachment_graph.<locals>.<lambda>¯  s   € ¨a®eó    Ú'bipartite_preferential_attachment_model)r   r   r3   r   r   r   r5   r7   rJ   ÚrandomÚadd_noderI   rM   r   Úchoicer   )r9   Úpr$   r;   r%   rK   r   ÚvvÚsourcerN   ÚbÚbbÚbbstubss   &&&&         r   Úpreferential_attachment_graphrl   q  s…  € ôR 	�Š�q˜,´·±Ô>€AØ‡}�}‡‚Ü×ÒÐ=Ó>Ð>àˆ1„uÜ×Ò ¨a¨S°Ð5Ó6Ð6ä�‹I€EÜ'¨°!Ó4€AÜ!& u¤Ó	.¡˜Aˆ#�•�-ˆ-¡€BÐ	.ß
ˆ"Ø��eŒeØ˜•U˜1•XˆFØˆq�E�L‰L˜Ô Ø�{‰{‹}˜qÔ ¤C¨£F¨e¤OÜ˜Q›�Ø—
‘
˜6¨Q�
Ô/Ø—
‘
˜6Ö*ä16°u¼cÀ!»fÔ1EÓFÑ1E¨A�c˜AŸH™H Q›K×'Ð'Ñ1E�ÐFä Ñ!3°RÓ8�àŸ™ WÓ-�Ø—
‘
˜6¨Q�
Ô/Ø—
‘
˜6×*Ø
�	‰	�"�Q•%×Ø6€A„FØ€Hùò' 
/ùò Gs   ÂG,Å !G1c                ó�  € \         P                  ! 4       p\        WPV4      pV'       d   \         P                  ! V4      pRV  RV RV R2Vn        V^ 8:  d   V# V^8¼  d   \         P
                  ! W4      # \        P                  ! RV,
          4      p^ pRpWp8  dŒ   \        P                  ! RVP                  4       ,
          4      p	V^,           \        W–,          4      ,           pW�8¼  d   Wp8  d   W�,
          pV^,           pK  Wp8  g   Kw  VP                  WpV,           4       K‘  V'       d–   ^ pRpWp8  dŒ   \        P                  ! RVP                  4       ,
          4      p	V^,           \        W–,          4      ,           pW�8¼  d   Wp8  d   W�,
          pV^,           pK  Wp8  g   Kw  VP                  W,           V4       K‘  V# )uç  Returns a bipartite random graph.

This is a bipartite version of the binomial (ErdÅ‘s-RÃ©nyi) graph.
The graph is composed of two partitions. Set A has nodes 0 to
(n - 1) and set B has nodes n to (n + m - 1).

Parameters
----------
n : int
    The number of nodes in the first bipartite set.
m : int
    The number of nodes in the second bipartite set.
p : float
    Probability for edge creation.
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.
directed : bool, optional (default=False)
    If True return a directed graph

Notes
-----
The bipartite random graph algorithm chooses each of the n*m (undirected)
or 2*nm (directed) possible edges with probability p.

This algorithm is $O(n+m)$ where $m$ is the expected number of edges.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.random_graph

See Also
--------
gnp_random_graph, configuration_model

References
----------
.. [1] Vladimir Batagelj and Ulrik Brandes,
   "Efficient generation of large random networks",
   Phys. Rev. E, 71, 036113, 2005.
zfast_gnp_random_graph(r.   r   g      ð?éÿÿÿÿ)r   ÚGraphr5   ÚDiGraphr   r(   ÚmathÚlogrc   ÚintrI   )
ÚnÚmrf   r;   Údirectedr%   Úlpr   ÚwÚlrs
   &&&&&     r   Úrandom_graphrz   ¹  s\  € ô\ 	�Š‹
€AÜ'¨¨aÓ0€AßÜ�JŠJ�q‹MˆØ% a S¨¨!¨¨A¨a¨S°Ð2€A„FàˆA„vØˆØˆA„vÜ×*Ò*¨1Ó0Ð0ä	�Š�#˜•'Ó	€Bà	€AØ
€AØ
Œ%Ü�XŠX�c˜DŸK™K›MÕ)Ó*ˆØ��E”C˜�“LÕ ˆØŒf˜œØ•ˆAØ�A•ŠAØŽ5Ø�J‰J�q˜a�%Ö çð ˆØˆØŒeÜ—’˜# §¡£Õ-Ó.ˆBØ�A•œ˜B�G›Õ$ˆAØ”&˜QœUØ•E�Ø˜•E’ØŽuØ—
‘
˜1�5 !Ö$à€Hra   c                óz  € \         P                  ! 4       p\        WPV4      pV'       d   \         P                  ! V4      pRV  RV RV R2Vn        V ^8X  g   V^8X  d   V# W,          pW&8¼  d   \         P
                  ! WVR7      # VP                  RR7       U Uu. uF  w  rVR,          ^ 8X  g   K  V NK  	  pp p\        \        V4      \        V4      ,
          4      p	^ p
W¢8  dN   VP                  V4      pVP                  V	4      pWÅV,          9   d   K7  VP                  W¼4       V
^,          p
KS  V# u upp i )aq  Returns a random bipartite graph G_{n,m,k}.

Produces a bipartite graph chosen randomly out of the set of all graphs
with n top nodes, m bottom nodes, and k edges.
The graph is composed of two sets of nodes.
Set A has nodes 0 to (n - 1) and set B has nodes n to (n + m - 1).

Parameters
----------
n : int
    The number of nodes in the first bipartite set.
m : int
    The number of nodes in the second bipartite set.
k : int
    The number of edges
seed : integer, random_state, or None (default)
    Indicator of random number generation state.
    See :ref:`Randomness<randomness>`.
directed : bool, optional (default=False)
    If True return a directed graph

Examples
--------
>>> G = nx.bipartite.gnmk_random_graph(10, 20, 50)

See Also
--------
gnm_random_graph

Notes
-----
If k > m * n then a complete bipartite graph is returned.

This graph is a bipartite version of the `G_{nm}` random graph model.

The nodes are assigned the attribute 'bipartite' with the value 0 or 1
to indicate which bipartite set the node belongs to.

This function is not imported in the main namespace.
To use it use nx.bipartite.gnmk_random_graph
zbipartite_gnm_random_graph(r.   r   )r$   T)Údatar
   )r   ro   r5   rp   r   r(   ÚnodesÚlistÚsetre   rI   )rt   ru   Úkr;   rv   r%   Ú	max_edgesÚdr&   r   Ú
edge_countr   r   s   &&&&&        r   Úgnmk_random_graphr„     s  € ôX 	�Š‹
€AÜ'¨¨aÓ0€AßÜ�JŠJ�q‹MˆØ*¨1¨#¨Q¨q¨c°°1°#°QÐ7€A„FØˆA„v��a”ØˆØ•€IØ„~Ü×*Ò*¨1¸aÔ@Ð@àŸ™ d˜Ô+Ô
CÑ+‘�¨q°­~ÀÑ/B�1ˆ1Ñ+€CÑ
CÜ”#�a“&œ3˜s›8Õ#Ó$€FØ€JØ
Œ.à�K‰K˜ÓˆØ�K‰K˜ÓˆØ�!•Œ9Ùà�J‰J�qÔØ˜!�OŠJØ€Hùó Ds   ÂD7Â3D7c                 ó8  € V P                  \        W,           4      4       \        \        \        V4      ^ .V,          4      4      pVP	                  \        \        \        WV,           4      ^.V,          4      4      4       \
        P                  ! WR4       V # )é    r
   )r   r7   ÚdictrV   Úupdater   Úset_node_attributes)r%   r<   r=   ri   s   &&& r   r5   r5   V  sn   € Ø×Ñ”U˜4�;Ó'Ô(ÜŒS”�t“˜q˜c D�jÓ)Ó*€AØ‡H�HŒT”#”e˜D¨¥+Ó.°°°dµ
Ó;Ó<Ô=Ü×Ò˜1 Ô-Ø€Hra   )rC   rO   rS   r[   rl   rz   r„   r(   r   )NN)NF)Ú__doc__rq   r   Ú	functoolsr   Únetworkxr   Únetworkx.utilsr   r   Ú__all__Ú_dispatchabler(   rC   rO   rS   r[   rl   rz   r„   r5   r   ra   r   Ú<module>r�      s”  ðñó Û Ý ã ß ;ò	€ð ×Ò˜¨TÔ2Ù�!�Q�Óó)ó ó 3ð)ñX �ÓØ×ÒÐ6¸tÐSWÔXóCó Yó ðCðL ×ÒÐ5¸dÐRVÔWóGó XðGðT ×Ò˜¨TÔ2óFó 3ðFðR ×Ò˜¨TÔ2óJó 3ðJñZ �ÓØ×Ò˜¨TÔ2óCó 3ó ðCñL �ÓØ×Ò˜¨TÔ2óRó 3ó ðRñj �ÓØ×Ò˜¨TÔ2óAó 3ó ðAôHra   