#include <iostream>
#include <climits>
using namespace std;
#define INF 99999
void floydWarshall(int graph[][10], int V) {
int dist[V][V];
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
if (graph[i][j] == 0 && i != j) {
dist[i][j] = INF;
} else {
dist[i][j] = graph[i][j];
}
}
}
for (int k = 0; k < V; k++) {
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
if (dist[i][k] != INF && dist[k][j] != INF && dist[i][j] > dist[i][k] + dist[k][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
cout << "The shortest distance matrix is: \n";
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
if (dist[i][j] == INF) {
cout << "INF" << "\t";
} else {
cout << dist[i][j] << "\t";
}
}
cout << endl;
}
}
int main() {
int V;
cout << "Enter the number of vertices: ";
cin >> V;
int graph[10][10];
cout << "Enter the adjacency matrix (enter 0 for no edge, non-zero values for edge weights):\n";
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
cin >> graph[i][j];
}
}
floydWarshall(graph, V);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2xpbWl0cz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgSU5GIDk5OTk5Cgp2b2lkIGZsb3lkV2Fyc2hhbGwoaW50IGdyYXBoW11bMTBdLCBpbnQgVikgewoKICAgIGludCBkaXN0W1ZdW1ZdOwoKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IFY7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgVjsgaisrKSB7CiAgICAgICAgICAgIGlmIChncmFwaFtpXVtqXSA9PSAwICYmIGkgIT0gaikgewogICAgICAgICAgICAgICAgZGlzdFtpXVtqXSA9IElORjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSBncmFwaFtpXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgZm9yIChpbnQgayA9IDA7IGsgPCBWOyBrKyspIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFY7IGkrKykgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFY7IGorKykgewogICAgICAgICAgICAgICAgaWYgKGRpc3RbaV1ba10gIT0gSU5GICYmIGRpc3Rba11bal0gIT0gSU5GICYmIGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkgewogICAgICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgY291dCA8PCAiVGhlIHNob3J0ZXN0IGRpc3RhbmNlIG1hdHJpeCBpczogXG4iOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFY7IGorKykgewogICAgICAgICAgICBpZiAoZGlzdFtpXVtqXSA9PSBJTkYpIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgIklORiIgPDwgIlx0IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgZGlzdFtpXVtqXSA8PCAiXHQiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgVjsKCgogICAgY291dCA8PCAiRW50ZXIgdGhlIG51bWJlciBvZiB2ZXJ0aWNlczogIjsKICAgIGNpbiA+PiBWOwoKCiAgICBpbnQgZ3JhcGhbMTBdWzEwXTsKCgogICAgY291dCA8PCAiRW50ZXIgdGhlIGFkamFjZW5jeSBtYXRyaXggKGVudGVyIDAgZm9yIG5vIGVkZ2UsIG5vbi16ZXJvIHZhbHVlcyBmb3IgZWRnZSB3ZWlnaHRzKTpcbiI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFY7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgVjsgaisrKSB7CiAgICAgICAgICAgIGNpbiA+PiBncmFwaFtpXVtqXTsKICAgICAgICB9CiAgICB9CgoKICAgIGZsb3lkV2Fyc2hhbGwoZ3JhcGgsIFYpOwoKICAgIHJldHVybiAwOwp9Cg==