Cod sursa(job #1959484)

Utilizator silkMarin Dragos silk Data 9 aprilie 2017 15:55:49
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>
#include <algorithm>
#define NMax 100
#define oo 1<<29
using namespace std;

int cost[NMax+1][NMax+1];

int main(){
    FILE* fin = fopen("royfloyd.in","r");
    FILE* fout = fopen("royfloyd.out","w");

    int k,i,j,x,N;

    fscanf(fin,"%d",&N);
    for(i = 1; i <= N; ++i)
        for(j = 1; j <= N; ++j)
        {
            fscanf(fin,"%d",&x);
            if(!x) cost[i][j] = oo;
            else cost[i][j] = x;
        }

    for(k = 1; k <= N; ++k)
        for(i = 1; i <= N; ++i)
            for(j = 1; j <= N; ++j)
            if(i != j) cost[i][j] = min(cost[i][j], cost[i][k] + cost[k][j]);

    for(i = 1; i <= N; ++i)
    {
        for(j = 1; j <= N; ++j)
        if(cost[i][j] == oo) fprintf(fout,"0 ");
        else fprintf(fout,"%d ",cost[i][j]);

        fprintf(fout,"\n");
    }


return 0;
}