1
+
2
+ // @raunak kumar jaiswal
3
+ function mindistance ( ans , visited ) {
4
+ var min_index = - 1 ;
5
+ var min_value = Number . MAX_VALUE ;
6
+ for ( var i = 0 ; i < visited . length ; i ++ ) {
7
+ if ( visited [ i ] == 0 && ans [ i ] < min_value ) {
8
+ min_value = ans [ i ] ;
9
+ min_index = i ;
10
+ }
11
+ }
12
+ return min_index ;
13
+ }
14
+
15
+ function dijjj ( visited , graph , ans , total ) {
16
+ for ( var j = 0 ; j < total ; j ++ ) {
17
+ var min_index = mindistance ( ans , visited ) ;
18
+ if ( min_index == - 1 ) {
19
+ return
20
+ }
21
+ visited [ min_index ] = 1 ;
22
+ var dist = ans [ min_index ] ;
23
+ for ( var i = 0 ; i < graph [ min_index ] . length ; i ++ ) {
24
+ var ele = graph [ min_index ] [ i ] ;
25
+ var vrr = ele [ 0 ] ;
26
+ var w = ele [ 1 ] ;
27
+ if ( visited [ vrr ] == 0 && dist + w < ans [ vrr ] ) {
28
+ ans [ vrr ] = dist + w ;
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ function make_graph ( edge , graph ) {
35
+ edge . forEach ( ede => {
36
+ graph [ ede [ 0 ] ] . push ( [ ede [ 1 ] , ede [ 2 ] ] )
37
+ graph [ ede [ 1 ] ] . push ( [ ede [ 0 ] , ede [ 2 ] ] )
38
+ } )
39
+ }
40
+
41
+ const dijkshtra = ( ) => {
42
+ var node = 6 ;
43
+ var graph = [ ] ;
44
+ for ( var i = 0 ; i < node ; i ++ ) {
45
+ graph [ i ] = [ ] ;
46
+ }
47
+ var edge = [ [ 0 , 1 , 1 ] , [ 0 , 3 , 7 ] , [ 1 , 3 , 5 ] , [ 0 , 2 , 3 ] , [ 1 , 2 , 1 ] , [ 1 , 4 , 3 ] , [ 4 , 5 , 6 ] , [ 5 , 2 , 2 ] ] ;
48
+ make_graph ( edge , graph )
49
+ var ans = new Array ( node ) ;
50
+ var visited = new Array ( node ) ;
51
+ for ( var i = 0 ; i < node ; i ++ ) {
52
+ ans [ i ] = Number . MAX_VALUE
53
+ visited [ i ] = 0 ;
54
+ }
55
+ var sort_dist_from = 0 ;
56
+ ans [ sort_dist_from ] = 0 ;
57
+ dijjj ( visited , graph , ans , node )
58
+ console . log ( "distance from source node that is 0 by default" )
59
+ console . log ( "node distance" )
60
+ for ( var i = 0 ; i < ans . length ; i ++ ) {
61
+ console . log ( i + " " + ans [ i ] )
62
+ }
63
+ }
64
+ dijkshtra ( )
0 commit comments