Cod sursa(job #1361029)

Utilizator dumytruKana Banana dumytru Data 25 februarie 2015 19:15:31
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

int main()
{
    FILE* IN    = fopen("royfloyd.in", "r");
    FILE* OUT   = fopen("royfloyd.out", "w");

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

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

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

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

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

    fclose(IN);
    fclose(OUT);

    return 0;
}