Finding shortest path between any two nodes using Floyd Warshall Algorithm | Javascript program to find the shortest path between any two nodes using Floyd Warshall Algorithm . ; Infinite value for array ; Initializing the distance and Next array ; No edge between node i and j ; Function construct the shortest path between u and v ; If there 's no path between  node u and v, simply return  an empty array ; Storing the path in a vector ; Standard Floyd Warshall Algorithm with little modification Now if we find that dis [ i ] [ j ] > dis [ i ] [ k ] + dis [ k ] [ j ] then we modify next [ i ] [ j ] = next [ i ] [ k ] ; We cannot travel through edge that doesn 't exist ; Print the shortest path ; Driver code ; Function to initialise the distance and Next array ; Calling Floyd Warshall Algorithm , this will update the shortest distance as well as Next array ; Path from node 1 to 3 ; Path from node 0 to 2 ; Path from node 3 to 2
let MAXN = 100 ; let INF = 1e7 ; let dis = new Array ( MAXN ) ; let Next = new Array ( MAXN ) ; for ( let i = 0 ; i < MAXN ; i ++ ) { dis [ i ] = new Array ( MAXN ) ; Next [ i ] = new Array ( MAXN ) ; } function initialise ( V , graph ) { for ( let i = 0 ; i < V ; i ++ ) { for ( let j = 0 ; j < V ; j ++ ) { dis [ i ] [ j ] = graph [ i ] [ j ] ; if ( graph [ i ] [ j ] == INF ) Next [ i ] [ j ] = - 1 ; else Next [ i ] [ j ] = j ; } } } function constructPath ( u , v ) { if ( Next [ u ] [ v ] == - 1 ) return null ; let path = [ ] ; path . push ( u ) ; while ( u != v ) { u = Next [ u ] [ v ] ; path . push ( u ) ; } return path ; } function floydWarshall ( V ) { for ( let k = 0 ; k < V ; k ++ ) { for ( let i = 0 ; i < V ; i ++ ) { for ( let j = 0 ; j < V ; j ++ ) { if ( dis [ i ] [ k ] == INF dis [ k ] [ j ] == INF ) continue ; if ( dis [ i ] [ j ] > dis [ i ] [ k ] + dis [ k ] [ j ] ) { dis [ i ] [ j ] = dis [ i ] [ k ] + dis [ k ] [ j ] ; Next [ i ] [ j ] = Next [ i ] [ k ] ; } } } } } function printPath ( path ) { let n = path . length ; for ( let i = 0 ; i < n - 1 ; i ++ ) document . write ( path [ i ] + " " ) ; document . write ( path [ n - 1 ] + " " ) ; } let V = 4 ; let graph = [ [ 0 , 3 , INF , 7 ] , [ 8 , 0 , 2 , INF ] , [ 5 , INF , 0 , 1 ] , [ 2 , INF , INF , 0 ] ] ; initialise ( V , graph ) ; floydWarshall ( V ) ; let path ; document . write ( " " ) ; path = constructPath ( 1 , 3 ) ; printPath ( path ) ; document . write ( " " ) ; path = constructPath ( 0 , 2 ) ; printPath ( path ) ; document . write ( " " ) ; path = constructPath ( 3 , 2 ) ; printPath ( path ) ;