Rev 13587 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!if $wims_read_parm!=slib_header
!goto proc
!endif
slib_author=Bernadette, Perrin-Riou
slib_example=[1,0,1;0,0,1;1,1,0],1\
[1,0,1;0,0,1;1,1,0],2\
[0,0,1;0,0,0;1,1,0],2
slib_require=pari
!exit
:proc
slib_out=
slib_G= !item 1 to -2 of $wims_read_parm
slib_G=!declosing $slib_G
slib_point= !item -1 of $wims_read_parm
slib_G=!translate internal $\
$ to ; in $slib_G
slib_n=!exec pari slib_N=Mat([$slib_G]);matsize(slib_N)[1]
slib_dstx=!exec pari {slib_N=Mat([$slib_G]);\
slib_P=vector($slib_n,slib_i,-1);\
slib_P[$slib_point]=0;\
slib_modif=1;\
while(slib_modif,\
slib_modif=0;\
for(slib_i=1,$slib_n,\
for(slib_j=1,$slib_n,\
if(slib_N[slib_i,slib_j]*(slib_P[slib_i]+1),\
if((slib_P[slib_j]+1),\
if(slib_P[slib_j]>slib_P[slib_i]+1, slib_P[slib_j]=slib_P[slib_i]+1;slib_modif=1),\
slib_P[slib_j]=slib_P[slib_i]+1; slib_modif=1);\
);\
);\
);\
);\
print(slib_P)}
slib_cc=!exec pari {slib_P=Vec([$slib_dstx]);\
slib_Q=vector($slib_n);\
for(slib_i=1,$slib_n,\
if(slib_P[slib_i]+1,slib_Q[slib_i]=1));\
print(slib_Q)}
slib_out= !positionof item 1 in $slib_cc