Cod sursa(job #981159)

Utilizator GiorgiGasca Giorgiana Giorgi Data 6 august 2013 15:14:26
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>

using namespace std;

int n,x[100][100];

void citire(){
    int i,j;
    FILE *f=fopen("royfloyd.in","r");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fscanf(f,"%d",&x[i][j]);
        }
    }
}

void afisare(){
    int i,j;
    FILE *g=fopen("royfloyd.out","w");
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fprintf(g,"%d ",x[i][j]);
        }
        fprintf(g,"\n");

    }
}

void floyd(){
    int i,k,j;
    for(k=1;k<=n;k++){
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++){
                if(i!=j&&x[i][k]!=0&&x[k][j]!=0&&(x[i][j]>x[i][k]+x[k][j]||x[i][j]==0)){
                    x[i][j]=x[i][k]+x[k][j];
                }

            }
        }

    }
}

int main()
{
    citire();
    floyd();
    afisare();
    return 0;
}