Cod sursa(job #457496)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 19 mai 2010 21:20:35
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>

const int NMAX=100;
const int Inf=0x3f3f3f3f;

int N,C[NMAX][NMAX];

inline int min(int x,int y) { return x<y?x:y; }

int main()
{
    int i,j,k;
    
    freopen("royfloyd.in","r",stdin);
    scanf("%d",&N);
    for (i=0;i<N;++i)
      for (j=0;j<N;++j)
        scanf("%d",&C[i][j]);
        
    for (i=0;i<N;++i)
      for (j=0;j<N;++j)
        if (i!=j && C[i][j]==0) C[i][j]=Inf;
        
    for (k=0;k<N;++k)
      for (i=0;i<N;++i)
        for (j=0;j<N;++j)
          C[i][j]=min(C[i][j],C[i][k]+C[k][j]);
          
    freopen("royfloyd.out","w",stdout);
    for (i=0;i<N;++i)
    {
      for (j=0;j<N;++j)
        printf("%d ",C[i][j]==Inf?0:C[i][j]);
      printf("\n");
    }

    return 0;
}