Cod sursa(job #2155519)

Utilizator hiimsobaDicianu Ioan-Alexandru hiimsoba Data 7 martie 2018 21:49:32
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std ;

#define NMax 105

int A[NMax][NMax] ;

int N ;

void read() {
    ifstream f("dijkstra.in") ;
    f >> N ;
    for(int i = 1 ; i <= N ; i++) {
        for(int j = 1 ; j <= N ; j++) {
            f >> A[i][j] ;
        }
    }
    f.close() ;
}

void solve() {
    for(int k = 1 ; k <= N ; k++) {
        for(int i = 1 ; i <= N ; i++) {
            for(int j = 1 ; j <= N ; j++) {
                if(A[i][k] and A[k][j] and i != j and (A[i][j] > A[i][k] + A[k][j] or !A[i][j])) {
                    A[i][j] = A[i][k] + A[k][j] ;
                }
            }
        }
    }
}

void write() {
    ofstream g("dijkstra.out") ;
    for(int i = 1 ; i <= N ; i++) {
        for(int j = 1 ; j <= N ; j++) {
            g << A[i][j] << ' ' ;
        }
        g << '\n' ;
    }
    g.close() ;
}

int main() {
    read() ;
    solve() ;
    write() ;
    return 0 ;
}