Pagini recente » Cod sursa (job #1678173) | tema | Cod sursa (job #2380035) | Cod sursa (job #1779090) | Cod sursa (job #2437193)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("royfloyd.in");
ofstream fout ("royfloyd.out");
#define NMAX 105
#define inf 2000000000
int N, a[NMAX][NMAX];
void citire(){
fin >> N;
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
fin >> a[i][j];
}
void Floyd_Warshall(){
for(int k = 1; k <= N; k++)
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++){ //Daca:
if(a[i][k] != 0 && // - muchia (i, k) != 0
a[k][j] != 0 && // - muchia (k, j) != 0
(a[i][j] > a[i][k] + a[k][j] || a[i][j] == 0) && // - distanta (i,k,j) e mai mica decat cea curenta (i,j)
i != j) // - (i, j) nu e bucla
a[i][j] = a[i][k] + a[k][j];
}
}
void afisare(){
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++)
fout << a[i][j] << " ";
fout << "\n";
}
}
int main()
{
citire();
Floyd_Warshall();
afisare();
return 0;
}