ó žÃÒYc@s¡dZdZddlmZddlZddddd d gZdefd „ƒYZdefd „ƒYZ defd „ƒYZ d„Z d„Z d„Z dS(s< Utility classes and functions for network flow algorithms. s&ysitu iÿÿÿÿ(tdequeNt CurrentEdgetLeveltGlobalRelabelThresholdtbuild_residual_networktdetect_unboundednesstbuild_flow_dictcBs8eZdZdZd„Zd„Zd„Zd„ZRS( s’Mechanism for iterating over out-edges incident to a node in a circular manner. StopIteration exception is raised when wraparound occurs. t_edgest_itt_currcCs#||_|jr|jƒndS(N(Rt_rewind(tselftedges((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyt__init__s  cCs|jS(N(R (R ((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pytgetscCs;yt|jƒ|_Wntk r6|jƒ‚nXdS(N(tnextRR t StopIterationR (R ((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyt move_to_next s   cCs.t|jjƒƒ|_t|jƒ|_dS(N(titerRtitemsRRR (R ((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR 's(s_edgess_its_curr(t__name__t __module__t__doc__t __slots__R RRR (((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyRs    cBseZdZdZd„ZRS(s*Active and inactive nodes in a level. tactivetinactivecCstƒ|_tƒ|_dS(N(tsetRR(R ((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR 1s (sactivesinactive(RRRRR (((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR,scBs2eZdZd„Zd„Zd„Zd„ZRS(sVMeasurement of work before the global relabeling heuristic should be applied. cCs0|r|||n tdƒ|_d|_dS(Ntinfi(tfloatt _thresholdt_work(R tntmtfreq((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR ;s#cCs|j|7_dS(N(R(R twork((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pytadd_work?scCs|j|jkS(N(RR(R ((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyt is_reachedBscCs d|_dS(Ni(R(R ((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyt clear_workEs(RRRR R#R$R%(((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR6s    csÐ|jƒrtjdƒ‚ntjƒ}|j|ƒtdƒ‰g|jdtƒD]B\}}}||krV|jˆˆƒdkrV|||f^qV}dt ‡‡fd†|DƒƒpÄd‰|j ƒr^xé|D]}\}}}t |jˆˆƒˆƒ}|j ||ƒsE|j ||d|ƒ|j ||ddƒqÚ||||d|]4\}}}ˆ|kr|ˆˆkr|ˆVqdS(N((t.0tutvtattr(tcapacityR(st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pys ws iR+(t is_multigraphtnxt NetworkXErrortDiGraphtadd_nodes_fromRR tTrueRtsumt is_directedtminthas_edgetadd_edgetgraph(tGR+tRR(R)R*t edge_listtr((R+Rst/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyRIs.     "9 #  c CsÀt|gƒ}t|gƒ}|jd}xŽ|r»|jƒ}xu||jƒD]c\}}|d|krQ||krQ||kr—tjdƒ‚n|j|ƒ|j|ƒqQqQWq.WdS(s/Detect an infinite-capacity s-t path in R. RR+s-Infinite capacity path, flow unbounded above.N( RRR7tpopleftRR-tNetworkXUnboundedtaddtappend( R9tstttqtseenRR(R)R*((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR‘s      cCs^i}xQ|D]I}td„||Dƒƒ||<||jd„||jƒDƒƒq W|S(s5Build a flow dictionary from a residual network. css|]}|dfVqdS(iN((R'R)((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pys §scss5|]+\}}|ddkr||dfVqdS(tflowiN((R'R)R*((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pys ¨s (tdicttupdateR(R8R9t flow_dictR(((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyR¢s  )(Rt __author__t collectionsRtnetworkxR-t__all__tobjectRRRRRR(((st/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/utils.pyts    H