Pagini recente » Cod sursa (job #782768) | Cod sursa (job #586874) | Cod sursa (job #2906058) | Cod sursa (job #2763040) | Cod sursa (job #2084467)
#include <fstream>
#define INF 500000
#define NMAX 105
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
void citire();
void royfloyd();
void afisare();
int minim(int, int);
int mat[NMAX][NMAX], n;
int main(){
citire();
royfloyd();
afisare();
fin.close();
fout.close();
return 0;
}
void citire(){
int i, j;
fin >> n;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++){
fin >> mat[i][j];
if(i!=j && mat[i][j] == 0)
mat[i][j] = INF;
}
}
void royfloyd(){
int i, j, k;
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
mat[i][j] = minim(mat[i][j], mat[i][k]+mat[k][j]);
}
int minim(int a, int b){
if(a < b)
return a;
else
return b;
}
void afisare(){
int i, j;
for(i=1; i<=n; i++){
for(j=1; j<=n; j++)
if(mat[i][j] == INF)
fout << "0 ";
else
fout << mat[i][j] << ' ';
fout << '\n';
}
}