Cod sursa(job #2548755)

Utilizator gabbie02Thomits Gabriel gabbie02 Data 16 februarie 2020 23:42:40
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;

unsigned int dist[100][100];

int main()
{
    ifstream fin("royfloyd.in");
    ofstream fout("royfloyd.out");
    unsigned short int n, altdist;
    fin >> n;
    for(unsigned short int i = 0; i < n; i++){
        for(unsigned short int j = 0; j < n; j++){
            fin >> dist[i][j];
        }
    }
    for(unsigned short int k = 0; k < n; k++){
        for(unsigned short int i = 0; i < n; i++){
            for(unsigned short int j = 0; j < n; j++){
                if(i != j){
                    if(dist[i][k] && dist[k][j]){
                        altdist = dist[i][k] + dist[k][j];
                        if(altdist < dist[i][j] || !dist[i][j]){
                            dist[i][j] = altdist;
                        }
                    }
                }
            }
        }
    }
    for(unsigned short int i = 0; i < n; i++){
        for(unsigned short int j = 0; j < n; j++){
            fout << dist[i][j] << " ";
        }
        fout << '\n';
    }
    return 0;
}