Cod sursa(job #1805032)

Utilizator serbanSlincu Serban serban Data 13 noiembrie 2016 13:20:01
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

int c[105][105];
int t[105][105];

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

    int n;
    f >> n;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= n; j ++)
            f >> c[i][j];

    for(int k = 1; k <= n; k ++)
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j <= n; j ++)
                if((!c[i][j] && c[i][k] && c[k][j]) || (c[i][j] > c[i][k] + c[k][j] && c[i][k] && c[k][j])) {
                    c[i][j] = c[i][k] + c[k][j];
                    t[i][j] = k;
                }
    for(int i = 1; i <= n; i ++) {
        c[i][i] = 0;
        for(int j = 1; j <= n; j ++)
            g << c[i][j] << " ";
        g << "\n";
    }
    return 0;
}