Cod sursa(job #256556)

Utilizator pascu_iulianPascu Iulian pascu_iulian Data 11 februarie 2009 21:32:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
//    Floyd-Warshall / Roy-Floyd

#include <cstdio>

int a[100][100],N;

int main()
{
    freopen("royfloyd.in","r",stdin);
    scanf("%d", &N);
    int i,j,k,s;
    
    for (i=0; i<N; i++ )
     for (j=0; j<N; j++ )
        scanf("%d", &a[i][j]);
    
    
    for (k=0; k<N; k++ )
     for (i=0; i<N; i++ )
        {
        s = a[i][k];
        for (j=0; j<N; j++ )
            if ( (a[i][j]==0 && i!=j && s*a[k][j]!=0) || 
                 (s *a[k][j]!=0 && a[i][j]>s+a[k][j])
                )
            a[i][j] = a[i][k] + a[k][j];
        }
    
    freopen("royfloyd.out","w",stdout);
    
    for (i=0; i<N; i++ )
        {
        for (j=0; j<N; j++ )
            printf("%d ", a[i][j]);
        printf("\n");
        }
    fclose(stdout); 
    
    return 0;
}