Cod sursa(job #2203749)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 13 mai 2018 01:10:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
 
std::ifstream fin ("royfloyd.in");
std::ofstream fout ("royfloyd.out");
 
const int NMAX = 101;
const int INF = (1<<29);
 
int N; 
 
int G[NMAX][NMAX]; 
 
int dist[NMAX][NMAX];
 
void read() {
 
    fin >> N;
 
    for(int i = 1; i <= N; ++i)
        for(int j = 1; j <= N; ++j) {
 
            fin >> G[i][j];
             
            dist[i][j] = G[i][j];
            if(G[i][j] == 0)
                dist[i][j] = INF;
        }
}
 
void royfloyd() {
 
 
    for(int k = 1; k <= N; ++k)
        for(int i = 1; i <= N; ++i)
            for(int j = 1; j <= N; ++j)
                if(dist[i][j] >  dist[i][k] + dist[k][j])
                    dist[i][j] = dist[i][k] + dist[k][j];
}
 
 
void print() {
 
    for(int i = 1; i <= N; ++i) {
        for(int j = 1; j <= N; ++j)
            if(i != j)
            fout << dist[i][j] << " ";
        else fout << 0 << " ";
        fout << '\n';
    }
}
 
 
int main() {
 
 
    read();
 
    royfloyd();
 
    print();
 
    return 0;
}