#include <iostream>
#include <climits>
#include <vector>
using namespace std;
#define INF 99999
void floydWarshall( int dist[ ] [ 10 ] , int V) {
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, E;
cout << "Enter the number of vertices: " ;
cin >> V;
cout << "Enter the number of edges: " ;
cin >> E;
int dist[ 10 ] [ 10 ] ;
for ( int i = 0 ; i < V; i++ ) {
for ( int j = 0 ; j < V; j++ ) {
if ( i == j) {
dist[ i] [ j] = 0 ;
} else {
dist[ i] [ j] = INF;
}
}
}
cout << "Enter the edges (source vertex, destination vertex, and weight):\n " ;
for ( int i = 0 ; i < E; i++ ) {
int u, v, weight;
cout << "Edge " << i + 1 << " (source destination weight): " ;
cin >> u >> v >> weight;
dist[ u] [ v] = weight;
}
floydWarshall( dist, V) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2xpbWl0cz4KI2luY2x1ZGUgPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgSU5GIDk5OTk5CnZvaWQgZmxveWRXYXJzaGFsbChpbnQgZGlzdFtdWzEwXSwgaW50IFYpIHsKCiAgICBmb3IgKGludCBrID0gMDsgayA8IFY7IGsrKykgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVjsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgVjsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoZGlzdFtpXVtrXSAhPSBJTkYgJiYgZGlzdFtrXVtqXSAhPSBJTkYgJiYgZGlzdFtpXVtqXSA+IGRpc3RbaV1ba10gKyBkaXN0W2tdW2pdKSB7CiAgICAgICAgICAgICAgICAgICAgZGlzdFtpXVtqXSA9IGRpc3RbaV1ba10gKyBkaXN0W2tdW2pdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBjb3V0IDw8ICJUaGUgc2hvcnRlc3QgZGlzdGFuY2UgbWF0cml4IGlzOiBcbiI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFY7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgVjsgaisrKSB7CiAgICAgICAgICAgIGlmIChkaXN0W2ldW2pdID09IElORikgewogICAgICAgICAgICAgICAgY291dCA8PCAiSU5GIiA8PCAiXHQiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY291dCA8PCBkaXN0W2ldW2pdIDw8ICJcdCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCBWLCBFOwoKCiAgICBjb3V0IDw8ICJFbnRlciB0aGUgbnVtYmVyIG9mIHZlcnRpY2VzOiAiOwogICAgY2luID4+IFY7CiAgICBjb3V0IDw8ICJFbnRlciB0aGUgbnVtYmVyIG9mIGVkZ2VzOiAiOwogICAgY2luID4+IEU7CgoKICAgIGludCBkaXN0WzEwXVsxMF07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFY7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgVjsgaisrKSB7CiAgICAgICAgICAgIGlmIChpID09IGopIHsKICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSAwOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGlzdFtpXVtqXSA9IElORjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgY291dCA8PCAiRW50ZXIgdGhlIGVkZ2VzIChzb3VyY2UgdmVydGV4LCBkZXN0aW5hdGlvbiB2ZXJ0ZXgsIGFuZCB3ZWlnaHQpOlxuIjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgRTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHYsIHdlaWdodDsKICAgICAgICBjb3V0IDw8ICJFZGdlICIgPDwgaSArIDEgPDwgIiAoc291cmNlIGRlc3RpbmF0aW9uIHdlaWdodCk6ICI7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3ZWlnaHQ7CgoKICAgICAgICBkaXN0W3VdW3ZdID0gd2VpZ2h0OwogICAgfQoKCiAgICBmbG95ZFdhcnNoYWxsKGRpc3QsIFYpOwoKICAgIHJldHVybiAwOwp9Cg==