Cod sursa(job #1459791)

Utilizator perjulucianPerju Lucian Ionut perjulucian Data 10 iulie 2015 19:07:43
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.17 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define INF 1000000
int N = 0; // dim matrice
int **matrice ;

void print_matrix(int ** matrix,FILE * out){
    int i , j  ;
    for ( i = 0 ; i < N ; i++){
        
        for(j = 0 ; j < N ; j++)
            fprintf(out,"%d ",matrix[i][j] );
        fprintf(out,"\n");
    }
}
void init(FILE * in){
    matrice = (int **)malloc(N * sizeof(int*));

    int i ,j;
    for (i = 0 ; i < N ; i++){
        matrice[i] = (int*)malloc(N * sizeof(int));
        
        for(j = 0 ; j < N ; j++){
            fscanf(in,"%d",&matrice[i][j]);
            if(matrice[i][j] == 0)
                matrice[i][j] = INF ;
        }

    }
    for ( i = 0 ; i < N ; i++)
        matrice[i][i] = 0 ;

}
void royfloyd(){
    int i , j , k ;
    for(k = 0 ; k < N ; k++)
        for(i = 0 ; i < N ; i++)
            for( j = 0 ; j < N ; j++ )
                 matrice[i][j] = fmin(matrice[i][j],matrice[i][k] + matrice[k][j]);
}
int main(){
    FILE * in = fopen("royfloyd.in","r");
    FILE * out = fopen("royfloyd.out","w");
    fscanf(in,"%d",&N);
    init(in);
    royfloyd();
    print_matrix(matrice,out);  

    fclose(in);
    fclose(out);
    return 0 ;
}