Cod sursa(job #1852754)

Utilizator CojocariuAlexandruCojocariu Alexandru CojocariuAlexandru Data 21 ianuarie 2017 10:10:08
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#define INF 500000
#define LMAX 105

using namespace std;

ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");

void citire();
void royfloyd();
void afisare();

int C[LMAX][LMAX], 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 >> C[i][j];
            if(i != j && C[i][j]==0)
                C[i][j] = INF;
            }
}

void royfloyd(){
    int k, x, y;
    for(k=1; k<=n; k++)
        for(x=1; x<=n; x++)
            for(y=1; y<=n; y++){
                if(C[x][y] > C[x][k] + C[k][y]){
                    C[x][y] = C[x][k] + C[k][y];
                    }
                }
}

void afisare(){
    int i, j;
    for(i=1; i<=n; i++){
        for(j=1; j<=n; j++){
            if(C[i][j] == INF)
                fout << "0 ";
                else
                fout << C[i][j] << ' ';
            }
        fout << '\n';
        }
}