Cod sursa(job #1098213)

Utilizator StexanIarca Stefan Stexan Data 4 februarie 2014 17:31:13
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
//
//  main.cpp
//  Roy-Floyd
//
//  Created by Stefan Iarca on 2/4/14.
//  Copyright (c) 2014 Stefan Iarca. All rights reserved.
//

#include <fstream>
#include <vector>
using namespace std;

#define NMAX 110

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");

const int oo = 100000;
int N,M,Cost[NMAX][NMAX];

void Read(){
    f>>N; int x;
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= N; j++) {
            f>>x;
            if( x == 0){
                Cost[i][j] = oo;
            }else{
                Cost[i][j] = x;
            }
        }
    }
}

void RoyFloyd(){
    for (int k = 1; k <= N; k++) {
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N; j++) {
                Cost[i][j] = min(Cost[i][j],Cost[i][k] + Cost[k][j]);
            }
        }
    }
}

void Solve(){
    RoyFloyd();
}

void Write(){
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= N; j++) {
            if (Cost[i][j] >= oo || i == j) {
                g<<0<<" ";
            }else{
                g<<Cost[i][j]<<" ";
            }
        }
        g<<"\n";
    }
}
int main()
{
    Read();
    Solve();
    Write();
    return 0;
}