Pagini recente » Istoria paginii runda/eusebiu_oji_2013_cls11-12/clasament | Cod sursa (job #2452205) | Cod sursa (job #448502) | Cod sursa (job #2806184) | Cod sursa (job #1628022)
#include <iostream>
#include <fstream>
using namespace std;
#define MAX_N 101
#define INF 1100
const char inFile[] = "royfloyd.in";
const char outFile[] = "royfloyd.out";
short int D[MAX_N][MAX_N];
int N;
inline int minim( int a, int b ){
return a < b ? a : b;
}
void read(){
ifstream fin(inFile);
fin >> N;
for( int i = 1; i <= N; i++ )
for( int j = 1; j <= N; j++ ){
fin >> D[i][j];
D[i][j] = (D[i][j] == 0 ? INF : D[i][j]);
}
fin.close();
}
void royfloyd(){
for( int k = 1; k <= N; k++ )
for( int i = 1; i <= N; i++ )
for( int j = 1; j <= N; j++ )
if( i != j )
D[i][j] = minim( D[i][j] , D[i][k] + D[k][j] );
}
void print(){
ofstream fout(outFile);
for( int i = 1; i <= N; i++ ){
for( int j = 1; j <= N; j++ )
fout << (D[i][j] == INF ? 0 : D[i][j]) << " ";
fout << "\n";
}
fout.close();
}
int main()
{
read();
royfloyd();
print();
return 0;
}