Cod sursa(job #311802)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 4 mai 2009 11:27:47
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#define dim 150

long long int a[dim][dim],n,i,k,m,j;
void read()
{
     scanf("%lld",&n);
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    scanf("%lld",&a[i][j]);
}
void afis()
{
     for(i=1;i<=n;i++,printf("\n"))
        for(k=1;k<=n;k++)
           printf("%lld ",a[i][k]);
}
void solve()
{
     int i,j,k;
     for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
           for(j=1;j<=n;j++)
                      if( a[j][i] && a[i][j] && i!=j &&(a[i][j] > a[i][k] + a[k][j] || !a[i][j]) )
              //       if (a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j) 
                       a[i][j]=a[i][k]+a[k][j];
afis();
}
int main ()
{
    freopen("royfloyd.in","r",stdin);
    freopen("royfloyd.out","w",stdout);
    read();
    solve();
return 0;
}