Cod sursa(job #324789)

Utilizator IoannaPandele Ioana Ioanna Data 17 iunie 2009 14:06:04
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
int a[110][110],n;

void read()
{
scanf("%d",&n);
int i,j;
for (i=1;i<=n;i++)
     for (j=1;j<=n;j++)
          scanf("%d",&a[i][j]);
}

void rf()
{
int i,j,k;
for (k=1;k<=n;k++)
     for (i=1;i<=n;i++)
          for (j=1;j<=n;j++)
              {
               if (a[i][k] && a[k][j] && i!=j)
                  {
                   if (a[i][j]==0 || a[i][j]>a[i][k]+a[k][j])
                       a[i][j]=a[i][k]+a[k][j];
                  }
              }
}

void print()
{
int i,j;
for (i=1;i<=n;i++)
    {
     for (j=1;j<=n;j++)
         {
          printf("%d ",a[i][j]);
         }
    printf("\n");
   }
}

int main()
{
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
read();
rf();
print();
return 0;
}