Pagini recente » Cod sursa (job #3278525) | Cod sursa (job #3294103) | Arhiva Educationala | Cod sursa (job #3286813) | Cod sursa (job #3292770)
#include <fstream>
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
const int Nmax = 105;
int n;
int cost[Nmax][Nmax], drum_minim[Nmax][Nmax];
void citire_matrice_ponderi(){
fin >> n;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
fin >> cost[i][j];
}
}
}
void initializare(){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
drum_minim[i][j] = cost[i][j];
}
}
}
void roy_floyd(){
initializare();
bool existaModificari = 1;
while(existaModificari){
existaModificari = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(i != j){
for(int aux = 1; aux <= n; aux++){
if(aux != i && aux != j && drum_minim[i][j] > drum_minim[i][aux] + drum_minim[aux][j]){
drum_minim[i][j] = drum_minim[i][aux] + drum_minim[aux][j];
existaModificari = 1;
}
}
}
}
}
}
}
void afisare_solutie(){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
fout << drum_minim[i][j] << ' ';
}
fout << '\n';
}
}
int main(){
citire_matrice_ponderi();
roy_floyd();
afisare_solutie();
return 0;
}