Cod sursa(job #1170779)

Utilizator fromzerotoheroFROM ZERO fromzerotohero Data 14 aprilie 2014 15:39:07
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;

#define nmax 101
#define inf (1<<28)

int main(){

    ifstream in("royfloyd.in");
    ofstream out("royfloyd.out");
    
    int n, i, j, k;
    int W[nmax][nmax];
    
    in >> n;
    
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++){
            in >> W[i][j];
            
            if (i != j && W[i][j] == 0)
                W[i][j] = inf;
            
        }
    
    for (k=1; k<=n; k++)
        for (i=1; i<=n; i++)
            for (j=1; j<=n; j++)
                W[i][j] = min(W[i][j], W[i][k] + W[k][j]);
    
    for (i=1; i<=n; i++){
        for (j=1; j<=n; j++)
            if (W[i][j] == inf) out << 0 << " ";
            else out << W[i][j] << " ";
        out << "\n";
    }
    
    return 0;
}