Cod sursa(job #1436599)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 16 mai 2015 10:04:20
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<stdio.h>
#define INF 1000000000
#define DIM 260
FILE *f=fopen("royfloyd.in","r"), *g=fopen("royfloyd.out","w");

int N, C[DIM][DIM], D[DIM][DIM];

void Citire(){
int i, j, x;

    fscanf(f,"%d\n",&N);

    for(i=1;i<=N;i++)
        for(j=1;j<=N;j++){

            fscanf(f,"%d",&x);

            if( x != 0 ){
                C[i][j] = x;
                D[i][j] = i;
            }
            else
                C[i][j] = INF;

        }

}

void Rezolvare(){
int i, j, k;


    for(k=1;k<=N;k++)
        for(i=1;i<=N;i++)
            for(j=1;j<=N;j++)
            if( i != j && i != k && j != k && C[i][j] > C[i][k] + C[k][j] ){

                C[i][j] = C[i][k] + C[k][j];
                D[i][j] = D[k][j];

            }

}

void Afisare(){
int i, j;

    for(i=1;i<=N;i++){

        for(j=1;j<=N;j++){

            if( C[i][j] == INF )
                fprintf(g,"0 ");
            else
                fprintf(g,"%d ",C[i][j]);

        }

        fprintf(g,"\n");

    }

}

int main(){

    Citire();
    Rezolvare();
    Afisare();

return 0;
}