Cod sursa(job #355806)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 12 octombrie 2009 11:15:05
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#define dim 150

long long int a[dim][dim];
long long int 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[i][k] && a[k][j] && ( a[i][k]+a[k][j]<a[i][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;
}