Cod sursa(job #870786)

Utilizator TeOOOVoina Teodora TeOOO Data 3 februarie 2013 21:51:19
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
# include<stdio.h>

//Constante
int const infinity = (int)1e5 + 1;

//Variabile
FILE *in,*out;

int nodes;
int a[101][101];
int main(void)
{
    in=fopen("royfloyd.in","rt");     //<--mda....
    out=fopen("royfloyd.out","wt");
    fscanf(in,"%d",&nodes);
    for(int i=1;i<=nodes;i++)
        for(int j=1;j<=nodes;j++)
        {
            fscanf(in,"%d",&a[i][j]);
            if(!a[i][j] && i!=j)
                a[i][j]=infinity;
        }

    for(int k=1;k<=nodes;k++)
        for(int i=1;i<=nodes;i++)
            for(int j=1;j<=nodes;j++)
                if(a[i][k] + a[k][j] < a[i][j] && i!=j)
                    a[i][j]=a[i][k]+a[k][j];

    for(int i=1;i<=nodes;i++)
    {
        for(int j=1;j<=nodes;j++)
            fprintf(out,"%d ",(a[i][j] == infinity)? 0: a[i][j]);
        fprintf(out,"\n");
    }
    fclose(in);
    fclose(out);
    return 0;
}