Cod sursa(job #1428454)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 4 mai 2015 16:33:32
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#define MAXN 100
int d[MAXN+1][MAXN+1];
int main(){
    int n, i, j, k;
    FILE *fin, *fout;
    fin=fopen("royfloyd.in", "r");
    fout=fopen("royfloyd.out", "w");
    fscanf(fin, "%d", &n);
    for(i=1; i<=n; i++){
        for(j=1; j<=n; j++){
            fscanf(fin, "%d", &d[i][j]);
        }
    }
    for(k=1; k<=n; k++){
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                if((i!=j)&&(d[i][k]!=0)&&(d[k][j]!=0)&&((d[i][j]==0)||(d[i][j]>d[i][k]+d[k][j]))){
                    d[i][j]=d[i][k]+d[k][j];
                }
            }
        }
    }
    for(i=1; i<=n; i++){
        for(j=1; j<n; j++){
            fprintf(fout, "%d ", d[i][j]);
        }
        fprintf(fout, "%d\n", d[i][n]);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}