#include <stdio.h>
#include <limits.h>
#define INF INT_MAX
#define V 4 // Number of vertices in the graph
// Function to print the distance matrix
void printSolution(int dist[V][V]);
// Implementation of the Floyd-Warshall algorithm
void floyd_warshall(int graph[V][V]) {
int dist[V][V];
int i, j, k;
// Initialize the distance matrix with the given graph weights
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
dist[i][j] = graph[i][j];
}
}
// Compute shortest paths
for (k = 0; k < V; k++) {
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
if (dist[i][k] != INF && dist[k][j] != INF && dist[i][k] + dist[k][j] < dist[i][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
// Print the distance matrix
printSolution(dist);
}
// Function to print the distance matrix
void printSolution(int dist[V][V]) {
printf("The shortest distances between every pair of vertices are:\n"); for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
if (dist[i][j] == INF)
else
}
}
}
int main() {
// Example graph represented as an adjacency matrix
int graph[V][V] = { {0, 5, INF, 10},
{INF, 0, 3, INF},
{INF, INF, 0, 1},
{INF, INF, INF, 0} };
// Run the Floyd-Warshall algorithm
floyd_warshall(graph);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KI2RlZmluZSBJTkYgSU5UX01BWAojZGVmaW5lIFYgNCAvLyBOdW1iZXIgb2YgdmVydGljZXMgaW4gdGhlIGdyYXBoCi8vIEZ1bmN0aW9uIHRvIHByaW50IHRoZSBkaXN0YW5jZSBtYXRyaXgKdm9pZCBwcmludFNvbHV0aW9uKGludCBkaXN0W1ZdW1ZdKTsKLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIEZsb3lkLVdhcnNoYWxsIGFsZ29yaXRobQp2b2lkIGZsb3lkX3dhcnNoYWxsKGludCBncmFwaFtWXVtWXSkgewogaW50IGRpc3RbVl1bVl07CiBpbnQgaSwgaiwgazsKIC8vIEluaXRpYWxpemUgdGhlIGRpc3RhbmNlIG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBncmFwaCB3ZWlnaHRzCiBmb3IgKGkgPSAwOyBpIDwgVjsgaSsrKSB7CiBmb3IgKGogPSAwOyBqIDwgVjsgaisrKSB7CiBkaXN0W2ldW2pdID0gZ3JhcGhbaV1bal07CiB9CiB9CiAvLyBDb21wdXRlIHNob3J0ZXN0IHBhdGhzCiBmb3IgKGsgPSAwOyBrIDwgVjsgaysrKSB7CiBmb3IgKGkgPSAwOyBpIDwgVjsgaSsrKSB7CiBmb3IgKGogPSAwOyBqIDwgVjsgaisrKSB7CiBpZiAoZGlzdFtpXVtrXSAhPSBJTkYgJiYgZGlzdFtrXVtqXSAhPSBJTkYgJiYgZGlzdFtpXVtrXSArIGRpc3Rba11bal0gPCBkaXN0W2ldW2pdKSB7CiBkaXN0W2ldW2pdID0gZGlzdFtpXVtrXSArIGRpc3Rba11bal07CiB9CiB9CiB9CiB9CiAvLyBQcmludCB0aGUgZGlzdGFuY2UgbWF0cml4CiBwcmludFNvbHV0aW9uKGRpc3QpOwp9Ci8vIEZ1bmN0aW9uIHRvIHByaW50IHRoZSBkaXN0YW5jZSBtYXRyaXgKdm9pZCBwcmludFNvbHV0aW9uKGludCBkaXN0W1ZdW1ZdKSB7CiBwcmludGYoIlRoZSBzaG9ydGVzdCBkaXN0YW5jZXMgYmV0d2VlbiBldmVyeSBwYWlyIG9mIHZlcnRpY2VzIGFyZTpcbiIpOwogZm9yIChpbnQgaSA9IDA7IGkgPCBWOyBpKyspIHsKIGZvciAoaW50IGogPSAwOyBqIDwgVjsgaisrKSB7CiBpZiAoZGlzdFtpXVtqXSA9PSBJTkYpCiBwcmludGYoIiU3cyIsICJJTkYiKTsKIGVsc2UKIHByaW50ZigiJTdkIiwgZGlzdFtpXVtqXSk7CiB9CiBwcmludGYoIlxuIik7CiB9Cn0KaW50IG1haW4oKSB7CiAvLyBFeGFtcGxlIGdyYXBoIHJlcHJlc2VudGVkIGFzIGFuIGFkamFjZW5jeSBtYXRyaXgKIGludCBncmFwaFtWXVtWXSA9IHsgezAsIDUsIElORiwgMTB9LAoge0lORiwgMCwgMywgSU5GfSwKIHtJTkYsIElORiwgMCwgMX0sCiB7SU5GLCBJTkYsIElORiwgMH0gfTsKIC8vIFJ1biB0aGUgRmxveWQtV2Fyc2hhbGwgYWxnb3JpdGhtCiBmbG95ZF93YXJzaGFsbChncmFwaCk7CiByZXR1cm4gMDsKfQ==