Cod sursa(job #1161683)

Utilizator SRaduRadu Szasz SRadu Data 31 martie 2014 13:23:55
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

const int INF = 100000;
const int MAX = 111;

int N;
int G[MAX][MAX];

void citire() {
    ifstream in("royfloyd.in");
    in >> N;
    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= N; j++) {
            in >> G[i][j];
            if(!G[i][j])
                G[i][j] = INF;
        }
    in.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(i == j) continue;
                G[i][j] = min(G[i][j], G[i][k] + G[k][j]);
            }
}

void afisare() {
    ofstream out("royfloyd.out");
    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= N; j++) 
            out << (G[i][j] == INF ? 0 : G[i][j]) << " ";
        out << "\n";
    } out.close();
}

int main() {
    citire();
    solve();
    afisare();
}