首页 > 代码库 > 贴 SPFA 代码 -- Fortran 实现

贴 SPFA 代码 -- Fortran 实现

不大专业,而且也没测试,欢迎挑错。

话说博客园怎么没有 Fortran 代码加亮……

 

      PROGRAMSPFA      INTEGERWEI(100,100)      INTEGERWAY(100)      INTEGERQUEUE(100)      LOGICALVISIT(100)      READ*,NVERT,NEDGE,MFROM,MTO      DOI=1,NEDGE        READ*,LPOSX,LPOSY,LWEI        WEI(LPOSX,LPOSY)=LWEI        WEI(LPOSY,LPOSX)=LWEI      ENDDO      DOI=1,NEDGE        WAY(I)=HUGE(I)        VISIT(I)=.FALSE.      ENDDO      QUEUE(1)=MFROM      VISIT(MFROM)=.TRUE.      WAY(MFROM)=0      JQH=1      JQT=2      DO        IF(JQH.EQ.JQT)GOTO7        ICURR=QUEUE(JQH)        JQH=JQH+1        IF(JQH.EQ.101)JQH=1        VISIT(ICURR)=.FALSE.        DOI=1,NVERT          IF(WEI(ICURR,I).GT.0.AND.     $    WEI(ICURR,I)+WAY(ICURR).LT.WAY(I))THEN            WAY(I)=WAY(ICURR)+WEI(ICURR,I)            IF(.NOT.VISIT(I))THEN              VISIT(I)=.TRUE.              QUEUE(JQT)=I              JQT=JQT+1              IF(JQT.EQ.101)JQT=1            ENDIF          ENDIF        ENDDO      ENDDO 7    PRINT*,WAY(MTO)      END
看这里!!!

 

贴 SPFA 代码 -- Fortran 实现