Cod sursa(job #1613323)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 25 februarie 2016 12:16:32
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<cstdio>
#define INF 1000000000
int n,i,j,k,v[110][110],x[110][110];
FILE *f,*g;
int minim(int a,int b){
    if(a<b)
        return a;
    return b;
}
int main(){
    f=fopen("royfloyd.in","r");
    g=fopen("royfloyd.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fscanf(f,"%d",&x[i][j]);
            if( !x[i][j] && i!=j )
                x[i][j] = INF;
        }
    }
    for(k=1;k<=n;k++){
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++){
                x[i][j] = minim( x[i][j] , x[i][k] + x[k][j] );
            }
        }
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            if( x[i][j] == INF )
                fprintf(g,"0 ");
            else
                fprintf(g,"%d ",x[i][j]);
        }
        fprintf(g,"\n");
    }

    fclose(f);
    fclose(g);
    return 0;
}