Cod sursa(job #1596083)

Utilizator chise_bChise Bogdan chise_b Data 10 februarie 2016 19:38:18
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;

ifstream f("royfloyd.in");
ofstream fout("royfloyd.out");
void citire(unsigned a[101][101], unsigned n)
{
    unsigned i, j;
    for(i=1; i<=n ;i++)
        for(j=1; j<=n; j++)
            f >> a[i][j];
}

void royfloyd(unsigned a[101][101], unsigned n)
{
    unsigned i, j, k;
    for(k=1; k<=n; k++)
        for(i=1; i<=n; i++)
            for(j=1; j<=n; j++)
                if(a[i][k] && a[k][j] && i!=j && (a[i][j]>a[i][k]+a[k][j] || !a[i][j]))
                    a[i][j]=a[i][k]+a[k][j];
}

void afisare(unsigned a[101][101], unsigned n)
{
    unsigned i, j;
    for(i=1; i<=n; i++)
        {for(j=1; j<=n; j++)
            fout << a[i][j] << " ";
        fout << endl;
        }
}
int main()
{
    unsigned n, a[101][101];
    f >> n;
    citire(a, n);
    royfloyd(a, n);
    afisare(a, n);
    return 0;
}