Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,63 @@
|
|||
100 NV=0: REM NUMBER OF VERTICES
|
||||
110 READ N$:IF N$<>"" THEN NV=NV+1:GOTO 110
|
||||
120 NE=0: REM NUMBER OF EDGES
|
||||
130 READ N1:IF N1 >= 0 THEN READ N2,W:NE=NE+1:GOTO 130
|
||||
140 DIM VN$(NV-1),VD(NV-1,2): REM VERTEX NAMES AND DATA
|
||||
150 DIM ED(NE-1,2): REM EDGE DATA
|
||||
160 RESTORE
|
||||
170 FOR I=0 TO NV-1
|
||||
180 : READ VN$(I): REM VERTEX NAME
|
||||
190 : VD(I,0) = -1: REM DISTANCE = INFINITY
|
||||
200 : VD(I,1) = 0: REM NOT YET VISITED
|
||||
210 : VD(I,2) = -1: REM NO PREV VERTEX YET
|
||||
220 NEXT I
|
||||
230 READ N$: REM SKIP SENTINEL
|
||||
240 FOR I=0 TO NE-1
|
||||
250 : READ ED(I,0),ED(I,1),ED(I,2): REM EDGE FROM, TO, WEIGHT
|
||||
260 NEXT I
|
||||
270 READ N1: REM SKIP SENTINEL
|
||||
280 READ O: REM ORIGIN VERTEX
|
||||
290 :
|
||||
300 REM BEGIN DIJKSTRA'S
|
||||
310 VD(O,0) = 0: REM DISTANCE TO ORIGIN IS 0
|
||||
320 CV = 0: REM CURRENT VERTEX IS ORIGIN
|
||||
330 FOR I=0 TO NE-1
|
||||
340 : IF ED(I,0)<>CV THEN 390: REM SKIP EDGES NOT FROM CURRENT
|
||||
350 : N=ED(I,1): REM NEIGHBOR VERTEX
|
||||
360 : D=VD(CV,0) + ED(I,2): REM TOTAL DISTANCE TO NEIGHBOR THROUGH THIS PATH
|
||||
370 : REM IF PATH THRU CV < DISTANCE, UPDATE DISTANCE AND PREV VERTEX
|
||||
380 : IF (VD(N,0)=-1) OR (D<VD(N,0)) THEN VD(N,0) = D:VD(N,2)=CV
|
||||
390 NEXT I
|
||||
400 VD(CV,1)=1: REM CURRENT VERTEX HAS BEEN VISITED
|
||||
410 MV=-1: REM VERTEX WITH MINIMUM DISTANCE SEEN
|
||||
420 FOR I=0 TO NV-1
|
||||
430 : IF VD(I,1) THEN 470: REM SKIP VISITED VERTICES
|
||||
440 : REM IF THIS IS THE SMALLEST DISTANCE SEEN, REMEMBER IT
|
||||
450 : MD=-1:IF MV > -1 THEN MD=VD(MV,0)
|
||||
460 : IF ( VD(I,0)<>-1 ) AND ( ( MD=-1 ) OR ( VD(I,0)<MD ) ) THEN MV=I
|
||||
470 NEXT I
|
||||
480 IF MD=-1 THEN 510: REM END IF ALL VERTICES VISITED OR AT INFINITY
|
||||
490 CV=MV
|
||||
500 GOTO 330
|
||||
510 PRINT "SHORTEST PATH TO EACH VERTEX FROM "VN$(O)":";CHR$(13)
|
||||
520 FOR I=0 TO NV-1
|
||||
530 : IF I=0 THEN 600
|
||||
540 : PRINT VN$(I)":"VD(I,0)"(";
|
||||
550 : IF VD(I,0)=-1 THEN 600
|
||||
560 : N=I
|
||||
570 : PRINT VN$(N);
|
||||
580 : IF N<>O THEN PRINT "←";:N=VD(N,2):GOTO 570
|
||||
590 : PRINT ")"
|
||||
600 NEXT I
|
||||
610 DATA A,B,C,D,E,F,""
|
||||
620 DATA 0,1,7
|
||||
630 DATA 0,2,9
|
||||
640 DATA 0,5,14
|
||||
650 DATA 1,2,10
|
||||
660 DATA 1,3,15
|
||||
670 DATA 2,3,11
|
||||
680 DATA 2,5,2
|
||||
690 DATA 3,4,6
|
||||
700 DATA 4,5,9
|
||||
710 DATA -1
|
||||
720 DATA 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue