Greedy Algorithms/FloydWarshall-AllPairShortestPath.c
// Solves the all-pairs shortest path problem using Floyd Warshall algorithm 
Solves the all-pairs shortest path problem using Floyd Warshall algorithm
Solves the all - pairs shortest path problem using Floyd Warshall algorithm
void floydWarshall (int graph[][V]) 
{ 
    int dist[V][V], i, j, k; 
    for (i = 0; i < V; i++) 
        for (j = 0; j < V; j++) 
            dist[i][j] = graph[i][j]; 
    for (k = 0; k < V; k++) 
    { 
        for (i = 0; i < V; i++) 
        { 
            for (j = 0; j < V; j++) 
            { 
                if (dist[i][k] + dist[k][j] < dist[i][j]) 
                    dist[i][j] = dist[i][k] + dist[k][j]; 
            } 
        } 
    } 
    printSolution(dist); 
}
void floydWarshall ( int graph [ ] [ V ] ) { int dist [ V ] [ V ] , i , j , k ; for ( i = 0 ; i < V ; i ++ ) for ( j = 0 ; j < V ; j ++ ) dist [ i ] [ j ] = graph [ i ] [ j ] ; for ( k = 0 ; k < V ; k ++ ) { for ( i = 0 ; i < V ; i ++ ) { for ( j = 0 ; j < V ; j ++ ) { if ( dist [ i ] [ k ] + dist [ k ] [ j ] < dist [ i ] [ j ] ) dist [ i ] [ j ] = dist [ i ] [ k ] + dist [ k ] [ j ] ; } } } printSolution ( dist ) ; }
Solves the all-pairs shortest path problem using Floyd Warshall algorithm
Solves the all - pairs shortest path problem using Floyd Warshall algorithm
/* dist[][] will be the output matrix that will finally have the shortest  
      distances between every pair of vertices */ /* Initialize the solution matrix same as input graph matrix. Or  
       we can say the initial values of shortest distances are based 
       on shortest paths considering no intermediate vertex. */ /* Add all vertices one by one to the set of intermediate vertices. 
      ---> Before start of an iteration, we have shortest distances between all 
      pairs of vertices such that the shortest distances consider only the 
      vertices in set {0, 1, 2, .. k-1} as intermediate vertices. 
      ----> After the end of an iteration, vertex no. k is added to the set of 
      intermediate vertices and the set becomes {0, 1, 2, .. k} */ // Pick all vertices as source one by one  // Pick all vertices as destination for the  // above picked source  // If vertex k is on the shortest path from  // i to j, then update the value of dist[i][j]  // Print the shortest distance matrix 