Cod sursa(job #1510044)

Utilizator emanuel_rRamneantu Emanuel emanuel_r Data 24 octombrie 2015 15:10:29
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>

using namespace std;

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

int a[101][101], b[101][101], c[101][101], n;
int const oo = 100000000;

void citire()
{
    int i, j;
    f>>n;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++){
            f>>a[i][j];
            if(a[i][j] == 0)
                c[i][j] = oo;
            c[i][j] = a[i][j];
        }
}

void floyd()
{
    int i, j, k;
    for(k=1; k<=n; k++){
        for(i=1; i<=n; i++)
            for(j=1; j<=n; j++)
                if(i!=j)
                    c[i][j] = min(a[i][k] + a[k][j], c[i][j]);
    }
}

void print()
{
    int i, j;
    for(i=1; i<=n; i++){
        for(j=1; j<=n; j++){
            if(c[i][j] == oo)
                c[i][j] = 0;
            g<<c[i][j]<<" ";
        }
        g<<"\n";
    }
}

int main()
{
    citire();
    floyd();
    print();
    return 0;
}