Cod sursa(job #771829)

Utilizator alexarnautuArnautu Alexandru alexarnautu Data 27 iulie 2012 11:00:35
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int main()
{
    FILE * iFile;
    FILE * oFile;

    iFile = fopen("royfloyd.in", "r");
    oFile = fopen("royfloyd.out", "w");

    int n, i, j, k, a[110][110];

    fscanf(iFile, "%d", &n);

    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            fscanf(iFile, "%d", &a[i][j]);

    for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(i != j && i != k && j != k && a[i][k] < 0 && a[k][i] < 0)
                    a[i][j] = min(a[i][j], a[i][k] + a[k][j]);

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            fprintf(oFile, "%d ", a[i][j]);
        fprintf(oFile, "\n");
    }

    fclose(iFile);
    fclose(oFile);
}