
    j              	       H    d dl mZ ddedededefdZdedee         fd	Zd
S )    	query_all   	from_zjhmto_zjhmmax_hopsreturnc                 T   | |k    rd| gddS | h}| | gfg}t          |          D ]}}g }|D ]p\  }}t          |          }	|	D ]Y}
|
|k    rd||gz   t          |          dc c c S |
|vr0|                    |
           |                    |
||
gz   f           Zq|}|s n~dg ddS )zKBFS to find shortest path between two persons via co-suspect relationships.Tr   )foundpathhopsF)range_get_co_suspectslenaddappend)r   r   r   visitedqueue_
next_queuecurrentr   	neighborsneighbor_zjhms              D/home/longshao/multi-rider-rag/modules/graph/services/path_finder.pyfind_shortest_pathr      s,   G	{A>>>kG)%&E8__  
" 	O 	OMGT(11I!* O O G++%)47)3CSQUYYWWWWWWWWW //KK...%%}dm_6L&MNNNO  	E	 B333    zjhmc                 B    d}t          |d| i          }d |D             S )Nae  
        SELECT DISTINCT x2."xyrxx_sfzh"
        FROM "ywdata"."zq_zfba_xyrxx" x1
        JOIN "ywdata"."zq_zfba_xyrxx" x2
          ON x2."ajxx_join_ajxx_ajbh" = x1."ajxx_join_ajxx_ajbh"
          AND x2."xyrxx_sfzh" <> x1."xyrxx_sfzh"
        WHERE x1."xyrxx_sfzh" = %(zjhm)s
          AND NULLIF(BTRIM(COALESCE(x2."xyrxx_sfzh", '')), '') IS NOT NULL
    r   c                 H    g | ]}|                     d           |d           S )
xyrxx_sfzh)get).0rs     r   
<listcomp>z$_get_co_suspects.<locals>.<listcomp>(   s-    AAAQUU<-@-@AAlOAAAr   r   )r   sqlrowss      r   r   r      s2    C S64.))DAATAAAAr   N)r   )shared.db.kingbaser   strintdictr   listr    r   r   <module>r.      s    ( ( ( ( ( (4 4# 4 4s 44 4 4 4 42B3 B49 B B B B B Br   