Cod sursa(job #145251)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 28 februarie 2008 17:22:27
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <string.h>

#define NMAX 101
#define INPUT  "royfloyd.in"
#define OUTPUT "royfloyd.out"
#define INF (0x3f3f3f3f)

int i,j,n,m,A[NMAX][NMAX],B[NMAX][NMAX],k,a,b;

int main()
{
 freopen(INPUT,"r",stdin);
 freopen(OUTPUT,"w",stdout);

 scanf("%d",&n);
 for (i=1;i<=n;i++)
 for (j=1;j<=n;j++)
    scanf("%d",&A[i][j]);

 memcpy(B,A,sizeof(A));
/* for (i=1;i<=n;i++)
 for (j=1;j<=n;j++)
    if (!B[i][j])
      B[i][j]=INF; */
 for (k=1;k<=n;k++)
 for (a=1;a<=n;a++)
 for (b=1;b<=n;b++)
    if (B[a][b]>B[a][k]+B[k][b] && a!=b)
      B[a][b]=B[a][k]+B[k][b];

 for (i=1;i<=n;i++)
    {
     for (j=1;j<=n;j++)
        if (B[i][j]!=INF)
          printf("%d ",B[i][j]);
        else printf("0 ");
     printf("\n");
    }
 fclose(stdin);
 fclose(stdout);
 return 0;
}