Cod sursa(job #1234306)

Utilizator FayedStratulat Alexandru Fayed Data 27 septembrie 2014 02:55:53
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <cstdio>
#define NMAX 100
#define INF 0x3f3f3f3f

int n;
int Shortest_Path[NMAX][NMAX];

inline void read(){

    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);

    scanf("%d",&n);
        for(register int i=1;i<=n;++i)
            for(register int j=1;j<=n;++j){
                    scanf("%d",&Shortest_Path[i][j]);
                        if(Shortest_Path[i][j] == 0)
                            Shortest_Path[i][j] = INF;
            }
}

inline void Roy_Floyd(){

    for(register int k=1;k<=n;++k)
        for(register int i=1;i<=n;++i)
            for(register int j=1;j<=n;++j)
              if(i!=j && Shortest_Path[i][j] > Shortest_Path[i][k] + Shortest_Path[k][j])
                Shortest_Path[i][j] = Shortest_Path[i][k] + Shortest_Path[k][j];
}

inline void write(){

    for(register int i=1;i<=n;++i){
        for(register int j=1;j<=n;++j){
            if(Shortest_Path[i][j] == INF)
                Shortest_Path[i][j] = 0;
                    printf("%d ",Shortest_Path[i][j]);

    }
            printf("\n");
 }
}

int main(){

    read();
    Roy_Floyd();
    write();

return 0;
}